- 浏览: 86160 次
文章分类
最新评论
发布:theboy 来源:net 【大 中 小】
根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为
根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为4分钟,即240秒,TIME_WAIT状态下的socket不能被回收使用。
具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket,甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务。 TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证。
Windows:
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,添加名为TcpTimedWaitDelay的
DWORD键,设置为60,以缩短TIME_WAIT的等待时间
发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
vi /etc/sysctl.conf
编辑文件,加入以下内容:
复制代码 代码如下:
然后执行 /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 已不存在,mysql进程的占用率很快就降下来的,各网站访问正常。
以上只是暂时的解决方法,最后仔细巡查发现是前天新上线的一个系统,程序代码中没有使用mysql.colse(),才导致大量的mysql TIME_WAIT。
LVS中,对于TIME_WAIT,有单独的命令设置:
ipvsadm --set tcp tcpfin udp
该命令使用时,需要分别指定这3个超时值,比如:ipvsadm --set 60 30 60
ipvsadm -L --timeout
该命令显示当前设置的各超时值(试了下,貌似没什么效果)
本文出处参考:http://www.jbxue.com/LINUXjishu/4493.html
根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为
根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为4分钟,即240秒,TIME_WAIT状态下的socket不能被回收使用。
具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket,甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务。 TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证。
Windows:
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,添加名为TcpTimedWaitDelay的
DWORD键,设置为60,以缩短TIME_WAIT的等待时间
Linux: netstat -ae |grep mysql tcp 0 0 aaaa:53045 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53044 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53051 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53050 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53049 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53048 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53055 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53054 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53053 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53052 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53059 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53058 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53057 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53056 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53063 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53062 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53061 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53060 192.168.12.3:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53067 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53066 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53065 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53064 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa53071 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53070 192.168.12.13:mysql TIME_WAIT root 0 tcp 0 0 aaaa:53069 192.168.12.13:mysql TIME_WAIT root 0
发现系统存在大量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 时间
修改之后,再用
netstat -ae|grep mysql tcp 0 0 aaaa:50408 192.168.12.13:mysql ESTABLISHED nobody 3224651 tcp 0 0 aaaa:50417 192.168.12.13:mysql ESTABLISHED nobody 3224673 tcp 0 0 aaaa:50419 192.168.12.13:mysql ESTABLISHED nobody 3224675
发现大量的TIME_WAIT 已不存在,mysql进程的占用率很快就降下来的,各网站访问正常。
以上只是暂时的解决方法,最后仔细巡查发现是前天新上线的一个系统,程序代码中没有使用mysql.colse(),才导致大量的mysql TIME_WAIT。
LVS中,对于TIME_WAIT,有单独的命令设置:
ipvsadm --set tcp tcpfin udp
该命令使用时,需要分别指定这3个超时值,比如:ipvsadm --set 60 30 60
ipvsadm -L --timeout
该命令显示当前设置的各超时值(试了下,貌似没什么效果)
本文出处参考:http://www.jbxue.com/LINUXjishu/4493.html
发表评论
-
apache2禁止显示目录列表的方法(转)
2016-03-15 16:22 905apache2禁止显示目录列表的修改方法 时间:20 ... -
php序列化函数数组与对象的方法
2016-03-15 16:13 472php序列化函数数组与对象的方法 时间:2015-1 ... -
ThinkPHP登录功能实例代码详解
2014-08-21 06:38 671分享下ThinkPHP登录功能的实现方法,是采用ThinkP ... -
几个php文件下载实例代码
2014-08-20 06:30 1005一个简单的php文件下载 ... -
php实现文件下载实例代码分享
2014-08-20 06:29 618php实现对文件下载需要http协议基础,php文件下载用到 ... -
php正则表达式入门-常用语法格式
2014-08-18 20:15 478php正则表达式入门-常 ... -
帝国cms如何用自定义函数获取新闻文章数
2014-08-14 21:55 436原文地址:http://www.jbxue.com/cms ... -
PHP生成随机用户名和密码人例子
2014-07-25 06:15 425使用PHP生成随机数可以应用在许多地方,比如可以设计程序的随 ... -
PHP下载文件方法实例教程
2014-07-25 06:14 481PHP下载文件的两种方法与代码分享 转自:http:/ ... -
php读取mysql数据库入门实例
2014-06-26 06:04 514原文链接:http://www.jbxu ... -
php读取sqlite数据库入门实例
2014-06-26 06:03 766分享一个读取sqlite数据的例子,php读取sqlite数 ... -
php curl 伪造IP来源 示例
2014-04-16 06:56 622php curl 太强大了,它不但可以模仿用户登录,还可以模仿 ... -
PHP 获取目录下的图片并随机显示 实例
2014-04-16 06:53 634从一个目录里获取某类 ... -
PHP图片上传代码一例
2014-01-02 06:47 658分享一个php图片上传代码,如下: ... -
PHP数字验证码的例子
2014-01-02 06:46 732在php中实现验证码,关键点在于掌握php gd库与sess ... -
ajax返回json类型的数据 js处理json类型的数据
2013-12-27 07:07 489ajax验证用户名 index_do. ... -
php解析xml
2013-12-27 07:03 4711,index.php <html> & ... -
PHP AJAX实现省市联动
2013-12-27 07:02 5841,province.php <html> ... -
PHP生成HTML静态页面实例代码
2013-12-15 08:21 499功能:从PHP生成HTML静态页面并存储到以年份和月份为名称 ... -
用PHP实现 上一篇、下一篇的代码
2013-12-15 08:18 519主页是index.php;传递的值是id(数据库的主键);文 ...
相关推荐
近期服务器出现大量time_wait的TCP连接造成服务器连接数过多而最终导致tomcat假死状态。连接服务器查看连接数的时候提示如下。 [root@test apache-tomcat-7.0.53]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a...
Linux大量TIME_WAIT解决办法.docx
linux 服务器大量TIME_WAIT解决方法
LINUX 大量TIME_WAIT状态的连接解决方法
问题描述:在Linux系统中高并发的Squid服务器,TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。解决方法:通过修改Linux内核参数,可以减少linux服务器的IME_WAIT套接字数量。vi /etc/sysctl.conf...
摘要视图订阅01.02.03.04.05.06.162149次第9644名99篇1篇0篇30条【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导
活跃于Chinaunix等专业技术社区,发表了大量关于Linux网络编程的文章,深受社区欢迎。目录前言第一篇 TCPIP协议详解第1章 TCPIP协议族 1.1 TCPIP协议族体系结构以及主要协议 1.1.1 数据链路层 1.1.2 网络层 ...
文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半...
本文将对 Linux? 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池...