Linux版本:RedHat AS4
socket编程关闭连接后端口并不是立即释放,默认时间是60秒后释放。
用命令netstat -an查看可以发现存在大量的TIME_WAIT
如果连接频繁的话会导致端口用尽。
解决方法:
# vi /etc/sysctl.conf
添加如下内容
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies=1
保存退出后执行
# sysctl -p
说明
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
AS5默认已经设置,所以不出现大量的TIME_WAIT
|