linux 下Time_wait过多问题解决

转自:http://blog.csdn.net/jaylong35/article/details/6605077

问题起因:

自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下18888,当时吓到了。

现象:

1、外部机器不能正常连接SSH

2、内向外不能够正常的ping通过,域名也不能正常解析。

问题排查:

通过 netstat  -anp | grep TIME_WAIT | wc -l 命令查看数量,发现TIME_WAIT的连接数量超过了18000太夸张了。

1、初步怀疑是程序没有关闭连接,codereview了两遍,发现,已经正常关闭。

2、网上看TIME_WAIT产生的原因,可能是因为服务器主动关闭连接导致TIME_WAIT产生。

3、查找TIME_WAIT解决方案:

发现系统存在大量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 让参数生效。

经过配置后,暂时的问题是解决了,再查看TIME_WAIT数量快速下降。

关键命令:

1、netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}‘

会得到类似下面的结果,具体数字会有所不同:

LAST_ACK 1
SYN_RECV 14
ESTABLISHED 79
FIN_WAIT1 28
FIN_WAIT2 3
CLOSING 5
TIME_WAIT 1669

状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

2、sysctl -a | grep time | grep wait
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

时间: 2024-10-13 18:19:23

linux 下Time_wait过多问题解决的相关文章

【转】 linux 下Time_wait过多问题解决

问题起因: 自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放.看了一下18888,当时吓到了. 现象: 1.外部机器不能正常连接SSH 2.内向外不能够正常的ping通过,域名也不能正常解析. 问题排查: 通过 netstat  -anp | grep TIME_WAIT | wc -l 命令查看数量,发现TIME_WAIT的连接数量超过了18000太夸张了. 1.初步怀疑是程序没有关闭连接,codereview了两遍,发现,

打通windows和Linux下的传输问题解决只能使用SSH协议下的22端口来传输文件(Openssh for windows)

目的:打通windows和Linux下的传输问题解决只能使用SSH协议下的22端口来传输文件 环境: windows IP192.168.1.120 Linux IP192.168.101 方法: 安装opensshfor windows (次软件开源并增加ssh协议将windows模拟成Unix环境) 安装完软件导入本地用户或者域用户 进入到bin目录下面执行 cd "c:\Program Files(x86)\OpenSSH\bin" mkgroup -l >>..\e

Nginx下TIME_WAIT过多的调优

查看Nginx并发状态 #netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 1259SYN_SENT 2FIN_WAIT1 8ESTABLISHED 166FIN_WAIT2 24SYN_RECV 25CLOSING 17LAST_ACK 18 ======================== 以上参数解释:CLOSED:无连接是活动的或正在进行LISTEN:服务器在等待进入呼叫SYN_R

离开win7的日子-linux下openoffice乱码问题解决

离开win7的日子 安装双系统:Red had enterprice linux 6.3 安装 open office 下载 Apache_OpenOffice_4.1.1_linux_x86-64_install-rpm_zh-CN.tar.gz 安装步骤: 1解压缩tar -xzcf  *.tar.gz 2 解压后进入到解压出来的文件下 里面有3个文件夹和1个文件:分别是licenses readmes RPMS 文件夹 和update文件3 进入到RPMS 文件夹下 输入命令 rpm -i

thinkphp5在Linux下Nginx配置问题解决

首先tp5的访问目录指向到webroot/public文件夹中.thinkphp的url访问:http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...],这个需要支持pathinfo,Apache默认支持,而Nginx不支持.1.php.ini中的配置参数cgi.fix_pathinfo = 12.修改nginx.conf文件. location ~ \.php(.*)$ { fastcgi_pass   127.0.0.1:90

linux下中文乱码问题解决

1.首先输入locale,查看编码设置 2.是否安装中文支持,没有则安装中文语言支持 方法一:yum方式——完全的中文环境支持. #yum groupinstall chinese-support   # yum groupinstall <language>-support 在上面的命令中,<language> 是下列之一: assamese, bengali, chinese, gujarati, hindi, japanese, kannada, korean, malaya

linux下高并发网络应用注意事项

本文转自:http://www.blogjava.net/bacoo/archive/2012/06/11/380500.html linux下高并发网络应用注意事项 vi /etc/sysctl.conf,加入以下内容:net.ipv4.tcp_tw_reuse=1 #表示开启重用.允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭net.ipv4.tcp_tw_recycle=1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表

linux下VMware安装出现的问题解决

linux下VMware安装出现的问题解决 linux下VMware安装出现的问题解决 报错信息 问题1liboverlay-scrollbar.so和libunity-gtk-module.so加载失败的问题. 问题2 Gtk-WARNING **: 无法在模块路径中找到主题引擎:“murrine” 问题3 无法加载libcanberra-gtk-module.so的问题 本文由乌合之众 lym瞎编,欢迎转载 blog.cnblogs.net/oloroso 本文由乌合之众 lym瞎编,欢迎转

Linux下安装load generator步骤及问题解决

Linux下安装load generator步骤及问题解决 上一篇 / 下一篇  2014-08-06 18:33:00 / 个人分类:loadrunner相关 查看( 146 ) / 评论( 0 ) / 评分( 0 / 0 ) 一.获取安装包 可在HP官网或其它途径获取资源.资源如下图所示 二.拷贝安装包到linux服务器下 在拷贝之前先解压获取到的安装包,解压后后生成一个文件夹,为了方便拷贝及在linux下的操作,我将解压后的文件夹打成了zip包. 使用SecureCPT工具将本地文件拷贝到