解决-服务器Linux存在大量time_wait的问题,导致服务性能问题,甚至严重的将访问不了应用

netstat -an查看到大量的TIME_WAIT状态的解决办法

近期服务器出现大量time_wait的TCP连接造成服务器连接数过多而最终导致tomcat假死状态。连接服务器查看连接数的时候提示如下。

[root@test apache-tomcat-7.0.53]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

TIME_WAIT 521

FIN_WAIT2 6

ESTABLISHED 133

很明显可以看出是请求太多频繁,主要由于后端服务器之间是通过rest请求相互调用的,而java服务器回收tcp线程速度比较慢,虽然已经有显性的关闭连接了,但是实际在调

解决办法是修改Linux内核参数,

修改系统socket最大连接数,在文件/etc/security/limits.conf最后加入下面两行:

* soft nofile 32768

* hard nofile 32768

或者缩小2MSL的时长、允许重用处于TIME_WAIT状态的TCP连接、快速回收处于 TIME_WAIT状态的TCP连接,修改/etc/sysctl.conf,添加如下几行:

#改系統默认的TIMEOUT时间
net.ipv4.tcp_fin_timeout=2

#启重用,允许将TIME_WAIT sockets重新用于新的TCP连接 默认为0表示关闭
net.ipv4.tcp_tw_reuse=1

#开启TCP连接中TIME_WAIT sockets的快速回收 默认为0 表示关闭
net.ipv4.tcp_tw_recycle=1

对于windows环境,可通过修改注册表进行配置:

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

添加一个DWORD类型的值TcpTimedWaitDelay,值可以根据实际情况配置。

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters

添加一个DWORD类型的值MaxUserPort ,值可以根据实际情况配置。

上面这些参数根据实际情况进行配置。

http://www.cnblogs.com/hjwublog/p/5114380.html

猜你喜欢

转载自blog.csdn.net/liaonanfeng88/article/details/83304864