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

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 html

 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]
"TcpTimedWaitDelay"=dword:0000001e
"MaxUserPort"=dword:0000fffe

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

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

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%windows

regedit %t% 服务器

del %t% /s/qcookie

 必须从新启动 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=8192tcp

 

参考:spa

https://www.cnblogs.com/tianzhiliang/articles/2400176.htmlcode

http://chembo.iteye.com/blog/1503770

相关文章
相关标签/搜索