今天,服务网站明显太晚了,我在为查服务器连接数,如何处理TIME_WAIT而烦恼
# netstat-an|awk '/TCP/{ print $6} '。
68 CLOSE_WAIT
2关闭
136可扩充的
38 FIN_WAIT1
16 FIN_WAIT2
2 LAST_ACK
8监听器
71 SYN_RECV
2936 TIME_WAIT
#
状态:说明
关闭:无连接处于活动或正在进行中
LISTEN :服务器正在等待来电
SYN_RECV :连接请求已到达。 等待确认
SYN_SENT :已启动APP应用程序。 打开连接
已启用:正常数据传输状态
FIN_WAIT1:我说APP应用程序已经完成
FIN_WAIT2:另一方同意释放
ITMED_WAIT :等待所有群体死亡
关闭:尝试在两侧同时关闭
TIME_WAIT :另一个版本已初始化
LAST_ACK :等待所有群体死亡
linux sysctl.conf close_wait
$ /proc/sys/net/core/wmem_max
xsdxg最能写缓冲区,参考优化值为:873200
$ /proc/sys/net/core/rmem_max
xsdxg最能读取缓冲区,参考优化值为:873200
$ /proc/sys/net/ipv4/tcp_wmem
TCP写缓冲区,可参考的优化值: 8192 436600 873200
$ /proc/sys/net/ipv4/tcp_rmem
TCP可以读取和参考buffer的优化值: 32768 436600 873200
$ /proc/sys/net/ipv4/tcp_mem
有三个相同的值,意味着:
net.ipv4.tcp_mem[0]:低于该值,TCP没有内存压力。
net.ipv4.tcp_mem[1]:此值将进入内存压力阶段。
net.ipv4.tcp_mem[2]:高于此值,因此TCP拒绝分配套接字。
上述内存单位是页面,而不是字节。 可供参考的优化值为:786432 1048576 1572864
$/proc/sys/net/core/netdev _ max _ backlog
进入数据包的最大设备队列。 默认值为300,对于重载服务器,此值可以调整为1000
$ /proc/sys/net/core/somaxconn
listen ()的默认参数,挂起请求的最大数量。 默认值为128。 对于繁忙的服务器,增加此值有助于网络性能。 可以调整为256。
$ /proc/sys/net/core/optmem_max
套接字缓冲区的最大初始化值,默认值10K。
$/proc/sys/net/IP v4/TCP _ max _ syn _ backlog
进入SYN数据包的最大请求队列。 默认值为1024。 对于重载服务器,增加此值明显有好处。 可以调整到2048。
$/proc/sys/net/IP v4/TCP _ retries 2
TCP失败的重发次数,默认值15表示重发次数为15次时被完全丢弃。 通过减少到5,可以尽早释放内核资源。
$/proc/sys/net/IP v4/TCP _ keepalive _ time
$/proc/sys/net/IP v4/TCP _ keepalive _ intvl
$/proc/sys/net/IP v4/TCP _ keepalive _ probes
这三个参数与TCP KeepAlive相关。 默认值为:
TCP _ keepalive _ time=3600 seconds (1hours ) )
tcp_keepalive_probes=3
tcp_keepalive_intvl=60 seconds
这意味着内核将在一个TCP连接到idle 2两个小时后启动probe。
如果probe 3失败3次(每次60秒),则内核将完全放弃,并认为连接已禁用。
对服务器来说,上述值显然太大了。 可以调整为:
/proc/sys/net/IP v4/TCP _ keepalive _ time 120
/proc/sys/net/IP v4/TCP _ keepalive _ intvl 30
/proc/sys/net/IP v4/TCP _ keepalive _ probes 2
$ proc/sys/net/IP v4/IP _ local _ port _ range
指定端口范围的配置。 默认值为32768 61000,足够大。
大合并时可调整为1024 65535
以下是在处理time_wait状态时必须处理的一些参数。
net.ipv4.tcp_syncookies=1
表示要打开SYN Cookies。 如果发生SYN队列溢出,可以启用和处理cookies以防止少量SYN攻击。 默认值为0,表示关闭。
net.ipv4.tcp_tw_reuse=1
表示打开重用。 允许将时间等待套接字重用到新的TCP连接。 默认值为0,处于关闭状态。
net.ipv4.tcp_tw_recycle=1
表示启用TCP连接的时间等待套接字的快速回收,默认值为0,表示禁用。
net.ipv4.tcp_fin_timeout=30
如果套接字被要求从本地关闭,则此参数决定FIN-WAIT-2保持其状态的时间。
net.IP v4.TCP _ keepalive _ time=1200
显示启用keepalive时,TCP发送keepalive消息的频率。 默认值为2小时,更改为20分钟。
net.IP v4.IP _ local _ port _ range=102465000
表示用于连接到外部的端口范围。 默认值为32768到61000,从1024更改为65000。
net.IP v4.TCP _ max _ syn _ backlog=8192
指示SYN队列的长度。 默认值为1024,队列长度为8192可以增加等待连接的网络连接数。
net.IP v4.TCP _ max _ tw _ buckets=5000
指示系统同时保持TIME_WAIT套接字的最大数量。 如果超过此数量,TIME_WAIT套接字将立即清除并打印警告消息。
默认值为180000,已更改为5000。 对于Apache、Nginx等服务,上述参数可以大大减少TIME_WAIT套接字的数量
防止Squid服务器被拖到大量的TIME_WAIT套接字上。 此参数控制TIME_WAIT套接字的最大数量。
PS :http://BBS.51os OS.com/thread-7460-1-1.html
夜空-本站版权
1、本站所有主题由这篇文章的作者发表,这篇文章的作者拥有夜空和文章相关的版权
2、其他单位或者个人使用、转载或者引用正文,应当征得该文作者和夜空的同意
3、本帖部分内容转载自其他媒体,并不意味着本站赞同其观点,对真实性负责
4、本帖侵犯任何著作权问题,请立即告知本站。 本站立即删除,最抱歉
5、原文链接: blog.slogra.com/post-385.html