nginx的web连接出现过多的TIME_WAIT

sysctl -a命令可以查看系统中的内核参数

所有的这些参数对应着是/proc/sys/下面的文件


将/proc/sys中的文件转换成sysctl中的变量依据下面两个简单的规则:

  1.去掉前面部分/proc/sys

  2.将文件名中的斜杠变为点

例如:

    /proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward

    /proc/sys/kernel/hostname =》 kernel.hostname


nginx的web连接中出现过多的TIME_WAIT过多,最终会把nginx给脱挂,查看内核参数

把内核参数改成:

shell> sysctl net.ipv4.tcp_timestamps=1

#net.ipv4.tcp_timestamps 开启时,net.ipv4.tcp_tw_recycle开启才能生效        shell> sysctl net.ipv4.tcp_tw_recycle=1

#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

这个变量和时间戳有关,lvs的nat模式中,在转发请求的时候,会把请求中的源ip和目标ip改变,时间戳可能会变,所以就会被回收,但是dr模式,时间戳是不会变的,所以dr模式开启没有问题

shell> sysctl net.ipv4.tcp_tw_reuse=1

#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接(这个对快速重启动某些服务,而启动后提示端口已经被使用的情形非常有帮助)

net.ipv4.tcp_tw_recycle依赖net.ipv4.tcp_timestamps

如果后者开启,前者才会生效

也可以vim /etc/sysctl.conf  ,最后sysctl -p就可以生效了!



你可能感兴趣的:(nginx的web连接出现过多的TIME_WAIT)