netstat下time_wait状态的tcp连接:

1.这是一种处于连接完全关闭状态前的状态;

2.通常要等上4分钟(windows server)的时间才能完全关闭;

3.这种状态下的tcp连接占用句柄与端口等资源,服务器也要为维护这些连接状态消耗资源;

4.解决这种time_wait的tcp连接只有让服务器能够快速回收和重用那些TIME_WAIT的资源:修改注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]添加dword值TcpTimedWaitDelay=30(30秒也为微软建议值;默认为2分钟)和MaxUserPort:65534(可选值5000 - 65534);

5.具体tcpip连接参数配置还可参照这里:http://technet.microsoft.com/zh-tw/library/cc776295%28v=ws.10%29.aspx

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]"TcpTimedWaitDelay"=dword:0000001e"MaxUserPort"=dword:0000fffe

将上述注册表内容保存为.reg文件,导入到注册表即可。

也可以使用批处理脚本导入,将如下文本保存为.bat文件,执行即可。:

cd /d %~dp0

set t="%~dp0tmp.reg"

echo Windows Registry Editor Version 5.00>%t%

echo. >>%t%

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]>>%t%

echo "TcpTimedWaitDelay"==dword:0000001e>>%t%

echo "MaxUserPort"=dword:0000fffe>>%t%

rem 以下两行是从注册表中删除对应的配置

rem echo "TcpTimedWaitDelay"=->>%t%

rem echo "MaxUserPort"=->>%t%

regedit %t%

del %t% /s/q

必须重新启动 Microsoft Windows 以使新设置生效

6.linux下:

vi /etc/sysctl.conf

新增如下内容:

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies=1

使内核参数生效:

[root@web02 ~]# sysctl -p

readme:

net.ipv4.tcp_syncookies=1 打开TIME-WAIT套接字重用功能,对于存在大量连接的Web服务器非常有效。

net.ipv4.tcp_tw_recyle=1

net.ipv4.tcp_tw_reuse=1 减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。

net.ipv4.tcp_fin_timeout=30 减少TCP KeepAlive连接侦测的时间,使系统可以处理更多的连接。

net.ipv4.tcp_keepalive_time=1800 增加TCP SYN队列长度,使系统可以处理更多的并发连接。

net.ipv4.tcp_max_syn_backlog=8192

参考:

Logo

更多推荐