- 浏览: 225461 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (143)
- java (13)
- mongodb (15)
- linux (31)
- mysql (2)
- cache (1)
- Android (3)
- lucene (2)
- javascript (9)
- php (13)
- 人生 (2)
- solr (7)
- 跨域iframe (1)
- 统计学 (1)
- redis (0)
- amazon aws (2)
- 国内比较便宜的vps (1)
- nginx (5)
- sns api应用 (1)
- api (1)
- postfix (1)
- nodejs (1)
- gitlab (1)
- myeclipse (1)
- matlab (3)
- ubuntu (2)
- stardict (1)
- cdn (1)
- lajp (1)
- workerman (1)
- tensorflow (1)
- 协同推荐算法 (3)
- html5 (1)
- extensions (3)
- Rome (1)
- 正则 (1)
- EBS (1)
- python (5)
- https (1)
- iptables (1)
- facebook (0)
- ImageMagick (0)
- elasticsearch (1)
- Flask (1)
- wordpress (0)
- kubernetes (0)
最新评论
-
三尺寒冰:
怎么实现排序的?分析一下
php mongodb 实现group 并按照某字段排序
问题起因:
自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下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
出自:
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
出自:
http://blog.csdn.net/jaylong35/article/details/6605077
发表评论
-
只允许指定用户登录SSH
2016-11-24 11:30 2663为安全需要,可以指定某用户才能登录SSH 软件环境: $ ss ... -
linux 添加用户、权限
2016-11-24 11:26 743http://www.cnblogs.com/daizhuac ... -
openssl make install : *** [install_docs] 错误 255”
2016-05-10 13:15 4142如果在linux下安装openssl,执行config和mak ... -
wget libcrypto.so.1.0.0 libssl.so.1.0.0 no version information available
2016-05-10 13:11 5505问题: >>wget http://www.ya ... -
查看linux服务器硬盘IO读写负载
2016-03-21 13:12 1806查看linux服务器硬盘IO读写负载 http://www. ... -
df -i inodes占用100%的问题及解决
2016-02-03 10:34 1432df:查看磁盘空间 df -i:查看Inodes是否还有空间 ... -
在linux下查看机器对外端口开放情况
2016-02-01 11:24 2465netstat -lnp -
linux防火墙禁止某一个端口
2015-12-30 10:58 1297iptables -A OUTPUT -p udp --dpo ... -
linux 查看服务器端口占用
2015-12-30 10:37 824netstat -ntupl -
IP Tracker 追踪
2015-12-30 10:36 1034IP/Domain网域查询,ip追踪; http://cn. ... -
常见TCP/UDP端口对照表
2015-12-29 17:25 1084http://www.seacha.com/tools/por ... -
查看linux服务器占用的端口和查看端口的运行程序
2015-12-29 17:24 1137root用户执行netstat -ntupl n表示不查询dn ... -
ImagickDrawException
2015-10-15 17:37 575exception 'ImagickDrawException ... -
linux SCP后台执行的方法
2015-10-15 15:29 1018linux SCP后台执行的方法 ************* ... -
linux 查看文件夹下的文件个数
2015-08-24 18:16 995linux 查看文件夹下的文件个数(当前目录的文件数) ls ... -
linux 画图不执行 Can't connect to X11 window server
2015-04-20 17:56 3567java在图形处理时调用了本地的图形处理库。在利用Java作图 ... -
nginx auth认证保护
2015-04-08 18:14 858yum install httpd 1. 进入ngnix配 ... -
用date命令给CentOS Linux设置修改系统日期和时间的方法
2014-11-13 10:40 1095修改CentOS Linux的时间可 ... -
linux下压力测试软件siege的安装与使用详解
2014-07-16 10:47 543linux下压力测试软件siege的安装与使用详解 假定: ... -
php 添加mongodb扩展
2014-04-30 17:03 803PHP MongoDB 扩展安装 [root@a5139 ~] ...
相关推荐
解决TIME_WAIT过多造成的问题
在IT行业中,服务器性能优化是至关重要的,尤其是对于运行关键应用如Tomcat的服务器。...同时,优化网络架构,如使用连接池,或者调整应用程序的行为,例如减少短连接的使用,也可以作为解决问题的补充策略。
在Linux系统中,当服务器处理大量网络连接时,可能会遇到TIME_WAIT状态的连接过多导致的问题。TIME_WAIT是TCP连接的一个正常终止状态,但若数量过多则可能会影响到服务器性能。本文将详细介绍如何在Linux系统中优化...
为了解决大量TIME_WAIT状态导致的问题,可以通过修改Linux系统的内核参数来优化。具体步骤如下: 1. **编辑sysctl.conf文件**:使用文本编辑器打开`/etc/sysctl.conf`文件,添加或修改以下参数: - `...
【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法,这是一个关于网络编程和Linux系统配置的问题。在TCP/IP通信中,TIME_WAIT状态是TCP连接生命周期的一部分,用于确保...
过多的TIME_WAIT连接虽然在正常情况下不会占用大量资源,但如果数量过大,可能会超出系统的默认限制,导致端口耗尽,进而影响新连接的建立。例如,Linux系统默认最多允许35600条TIME_WAIT连接。 解决这个问题的方法...
这种状态对于确保连接的可靠关闭至关重要,但过多的TIME_WAIT连接会带来问题。 TIME_WAIT状态的主要目的是: 1. 防止旧连接中的重复数据包干扰新连接。TCP通过等待2倍的MSL(最大段生存期)来确保这些旧的数据包在...
虽然TIME_WAIT状态对于TCP的可靠性至关重要,但过多的TIME_WAIT连接可能导致服务器端口资源紧张,特别是在高并发的服务器环境下,如Squid缓存服务器。在这种情况下,可以通过调整内核参数来缓解问题: 1. **启用TCP...
通过合理调整内核参数,可以有效缓解TIME_WAIT套接字过多带来的问题,提高服务器性能和稳定性。但需要注意的是,任何参数更改都需要根据实际工作负载和网络环境进行测试,以确保改动不会引入新的问题。
- `net.ipv4.tcp_max_tw_buckets`设置系统能同时保持的最大TIME_WAIT连接数量,合理设置可以避免TIME_WAIT状态过多导致的问题。 #### 四、示例配置 以下是一些具体的配置示例: ```bash # 编辑/etc/sysctl.conf...
总结来说,优化Linux内核参数是提高服务器并发处理能力的有效手段,特别是针对TCP连接管理进行微调,可以有效地解决TIME_WAIT状态的连接占用资源的问题,并增强服务器的防御能力。同时,合理调整端口范围和连接队列...
Linux服务器上的网络连接状态是监控和管理服务器性能的关键部分,特别是对于...同样,TIME_WAIT过多可能影响新连接的建立,可能需要调整TCP超时设置。因此,熟悉这些状态有助于网络管理员有效地管理和优化网络资源。
- 含义: 限制TIME-WAIT状态下的buckets数量,防止大量TIME_WAIT连接占用过多资源。 #### 应用步骤 1. 使用文本编辑器打开`/etc/sysctl.conf`文件。 2. 将上述参数添加到该文件中。 3. 保存并关闭文件。 4. 使更改...
SYN 报文什么时候下会被丢弃 SYN 报文是什么时候下会被丢弃?...这个问题跟工作上也是有关系的,我们需要了解 TCP 连接的建立过程,并了解 TIME_WAIT 状态和 PAWS 机制的作用,以便更好地解决工作中的问题。
2. **调整TCP连接复用**:启用TCP连接复用(TCP Keepalive或TCP_tw_reuse)可以减少TIME_WAIT状态的影响,让已关闭但还在TIME_WAIT的连接可以被复用,降低端口资源消耗。 3. **修改TCP最大连接数**:在某些系统中,...
- TIME_WAIT和CLOSE_WAIT状态过多会影响网络性能,优化TCP连接设置。 这份指南提供了从系统启动到网络问题的全面排查方法,旨在帮助ECS用户更有效地解决Linux运维中遇到的各种问题,提升系统的稳定性和可用性。通过...
11. `net.core.tcp_max_tw_buckets = 5000`:限制TIME_WAIT套接字的最大数量,防止过多的TIME_WAIT状态占用资源。 此外,还有其他网络缓冲区大小的优化,如: - `/proc/sys/net/core/wmem_max` 和 `/proc/sys/...
6. **keepalive_timeout**:设置客户端连接保持活动状态的超时时间,防止过多的空闲连接占用资源。 7. **client_header_buffer_size**:设置客户端请求头部的缓冲区大小。通常设置为系统页面大小的倍数,以适应不同...
Apache服务器是世界上最流行的Web服务器之一,它以其稳定性和可扩展性而受到广泛的使用。在软件开发过程中,确保服务器能够...同样,过多的`TIME_WAIT`状态可能表明服务器未能有效地管理连接关闭,需要优化相关设置。