linux服务器出现大量TIME_WAIT的解决方法
2016-07-24 09:00
666 查看
今天突然发现博客的访问速度变得缓慢,反复查找原因,发现服务器存在大量的TIME_WAIT连接。
通过netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’命令进行查询,反馈结果为:
TIME_WAIT 236
ESTABLISHED 13
LISTEN 11
显然TIME_WAIT 的数量过于异常。
通过编辑配置文件,调整内核参数解决问题。
使用命令:vi /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1 (某些情况下该参数已启用)
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行/sbin/sysctl -p让参数生效。
net.ipv4.tcp_syncookies = 1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout修改系統默认的TIMEOUT时间
修改之后,再用命令查看TIME_WAIT连接数
netstat -ae|grep “TIME_WAIT” |wc –l
发现大量的TIME_WAIT 已不存在,mysql进程的占用率很快就降下来的,网站访问正常。 不过很多时候,出现大量的TIME_WAIT状态的连接,往往是因为网站程序代码中没有使用mysql.colse(),才导致大量的mysql TIME_WAIT。
如果你的服务器是Windows平台,可以修改下面的注册表键值:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
“TcpTimedWaitDelay”=dword:0000001e
一般情况下,使用虚拟空间的用户不太需要担心此类问题,如果是使用VPS的用户,建议按照此类方法进行排查和设置,可以有效的提升mysql服务的查询速度。对于wordpress这种程序尤为重要,如果是使用wordpress建站的朋友请务必重视起来。
本文固定链接: http://www.frontopen.com/1219.html
转载请注明: 品味人生
2013年08月07日于 前端开拓者 发表
通过netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’命令进行查询,反馈结果为:
TIME_WAIT 236
ESTABLISHED 13
LISTEN 11
显然TIME_WAIT 的数量过于异常。
通过编辑配置文件,调整内核参数解决问题。
使用命令:vi /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1 (某些情况下该参数已启用)
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行/sbin/sysctl -p让参数生效。
net.ipv4.tcp_syncookies = 1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout修改系統默认的TIMEOUT时间
修改之后,再用命令查看TIME_WAIT连接数
netstat -ae|grep “TIME_WAIT” |wc –l
发现大量的TIME_WAIT 已不存在,mysql进程的占用率很快就降下来的,网站访问正常。 不过很多时候,出现大量的TIME_WAIT状态的连接,往往是因为网站程序代码中没有使用mysql.colse(),才导致大量的mysql TIME_WAIT。
如果你的服务器是Windows平台,可以修改下面的注册表键值:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
“TcpTimedWaitDelay”=dword:0000001e
一般情况下,使用虚拟空间的用户不太需要担心此类问题,如果是使用VPS的用户,建议按照此类方法进行排查和设置,可以有效的提升mysql服务的查询速度。对于wordpress这种程序尤为重要,如果是使用wordpress建站的朋友请务必重视起来。
本文固定链接: http://www.frontopen.com/1219.html
转载请注明: 品味人生
2013年08月07日于 前端开拓者 发表
相关文章推荐
- TIME_WAIT和CLOSE_WAIT
- CLOSE-WAIT与TIME_WAIT
- mysql 大量TIME_WAIT
- CLOSED_WAIT & TIME_WAIT
- 解决TIME_WAIT过多问题
- TCP状态
- jfinal使用c3p0连接mysql数据库,连接线程time_wait问题
- TCP古董TIME_WAIT:为什么被动关闭的一方不需要TIME_WAIT傻等呢,似乎人人都了然了
- 解决服务器出现大量CLOSE_WAIT和TIME_WAIT连接的方法
- TCP的状态兼谈Close_Wait和Time_Wait的状态
- time _wait 状态
- time_wait状态
- socket一个完整的过程中TCP的11中状态
- TCP建立与断开连接那些事儿
- tcp短连接TIME_WAIT问题解决方法大全(1)——高屋建瓴
- tcp短连接TIME_WAIT问题解决方法大全(2)——SO_LINGER
- tcp短连接TIME_WAIT问题解决方法大全(3)——tcp_tw_recycle
- tcp短连接TIME_WAIT问题解决方法大全(4)——tcp_tw_reuse
- tcp短连接TIME_WAIT问题解决方法大全(5)——tcp_max_tw_buckets
- bind:address already in use的深刻教训以及解决办法