linux中time_wait的socket的快速回收和重用

查看time_wait状态下的tcp的快速回收和重用状态:
  sudo sysctl -a|grep tcp_timestamp
  sudo sysctl -a|grep tcp_tw_reuse
  sudo sysctl -a|grep tcp_tw_recycle
  tcp_tw_reuse和tcp_tw_recycle的启用前提是tcp_timestamp已被启用

 

我们可以通过调整内核参数来调整:
  vi /etc/sysctl.conf
编辑文件,加入以下内容:
  net.ipv4.tcp_syncookies = 1
  net.ipv4.tcp_tw_reuse = 1
  net.ipv4.tcp_tw_recycle = 1
  net.ipv4.tcp_fin_timeout = 30
然后执行/sbin/sysctl -p让参数生效。
  net.ipv4.tcp_syncookies = 1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  net.ipv4.tcp_tw_reuse = 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  net.ipv4.tcp_tw_recycle = 1表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
  net.ipv4.tcp_fin_timeout修改系統默认的TIMEOUT时间
修改之后,再用命令查看TIME_WAIT连接数

  netstat -ant |grep “TIME_WAIT” |wc –l

统计当前TCP连接状态:

  netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

在没有nat情况下还需要设置net.ipv4.tcp_timestamps = 1才能生效。

posted @ 2021-01-11 17:48  虾米没有肚  阅读(395)  评论(0)    收藏  举报