`
cooler1217
  • 浏览: 380029 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

netstat监控大量ESTABLISHED连接与Time_Wait连接问题

 
阅读更多
问题描述:

在不考虑系统负载、CPU、内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连接。

# netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
CLOSE_WAIT         348
ESTABLISHED        1240
TIME_WAIT          5621

监控Apache与tomcat之间的链接端口

#netstat -n | grep 8009 | wc -l

7198

问题1:怎么解决大量Time_Wait

通过调整内核参数:
复制代码

vim /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=30修改系統默认的 TIMEOUT 时间。

如果以上配置调优后性能还不理想,可继续修改一下配置:
复制代码

vi /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192
#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

复制代码

调优完毕,再压一下看看效果吧。

# netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'

ESTABLISHED        968

问题1:怎么解决请求结束后依然存在大量ESTABLISHED没有被释放

初步推断是tomcat服务器回收session时出了问题,这个一般都跟服务器的Timeout设置有联系。

查看tomcat的配置文件 server.xml



<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />
*****



检查配置得出20000毫秒的时候acceptCount=”100” ,明显不合理,最大连接数也太小了吧。

所以进一步优化:

connectionTimeout="20000" 改为 connectionTimeout="100"

acceptCount="100"改为acceptCount="5000"

优化完毕,继续压测...

系统响应能力节节攀升,之前LoadRunner报错问题直到压倒***并发也再也没有出现。

Action.c(380): 错误 -26608: 对于“http://www.cnlogs.com/javame”,HTTP 状态代码=504 (Gateway Time-out)

总结:

待定,以后再写!
分享到:
评论

相关推荐

    Netstat命令详解如何关闭TIME_WAIT连接如何查看nginx的访问流量[归类].pdf

    4. 关闭 TIME_WAIT 连接:使用 netstat -ant | grep TIME_WAIT | awk '{print $2}' | xargs kill -9 命令可以关闭 TIME_WAIT 连接。 网络连接状态详解: 网络连接状态可以分为 12 种可能的状态,前面 11 种是按照 ...

    1.4 zabbix监控tcp连接数1

    总结起来,通过以上步骤,我们可以使用Zabbix监控服务器的TCP连接状态,及时发现并处理可能存在的网络问题,例如过多的CLOSE_WAIT状态可能导致资源占用过高,而异常的TIME_WAIT状态可能指示着网络通信的问题。...

    运维之道 | Zabbix 监控服务器TCP连接状态信息

    time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想 一、TCP状态介绍 1、man netstat查看TCP的各种状态信息描述: LISTEN :侦听来自...

    cacti添加监控TCP连接模板

    TCP连接由源端口号、目标端口号以及各自的IP地址唯一标识,这种连接状态可以分为SYN_SENT、SYN_RECEIVED、ESTABLISHED、CLOSE_WAIT、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、CLOSED等多种状态。 在Cacti中添加TCP连接...

    TCP_Connection_Status.zip

    这个脚本可以帮助管理员监控服务器上的活跃连接,发现异常连接(如TIME_WAIT过多或被拒绝的连接),从而及时调整服务器配置,优化网络性能。 其次,Cacti是一款广泛使用的网络监控工具,它利用SNMP(简单网络管理...

    netstat -na 结果

    此外,还有一系列其他状态的连接,如`TIME_WAIT`和`FIN_WAIT_2`,这些都是TCP连接生命周期中的一部分,反映了连接的关闭过程或者是在等待对方确认的过程中。 ### 网络管理与安全意义 了解`netstat -na`命令的输出...

    查看apache连接的连接并发数[参照].pdf

    `netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'`会显示不同TCP连接状态的数量,如`SYN_RECV`(等待确认的连接),`ESTABLISHED`(正常数据传输),`FIN_WAIT1`和`FIN_WAIT2`(关闭过程中的...

    TCP.rar_The Network_所有TCP连接

    例如,“netstat -ano”会列出所有活动的TCP连接,包括进程ID,这对于诊断网络问题、监控应用程序的网络行为或者排查潜在的安全问题非常有用。每个条目通常包含以下信息:本地IP地址、远程IP地址、状态(如...

    Linux netstat命令查看并发连接数的方法

    - `TIME_WAIT`: 连接已关闭,等待超时以确保所有数据被接收 - `CLOSING`: 双方同时尝试关闭连接 - `LAST_ACK`: 等待所有数据传输完成,然后关闭连接 - `ITMED_WAIT`: 等待一段时间确保所有数据被接收,然后关闭连接 ...

    apache并发连接查看

    例如,大量的**TIME_WAIT**状态可能表明服务器面临资源回收的压力;而高比例的**ESTABLISHED**状态则表明服务器当前正承受着较大的访问量。 #### 四、并发连接数的优化策略 1. **调整Apache配置**:合理设置Apache...

    Windows下VC实现的类似Netstat命令查看端口开放情况的程序(Win7)

    2. **获取TCP连接信息**:使用`GetTcpTable2`函数,它能够提供关于系统当前TCP连接的详细信息,包括本地和远程IP地址、端口号以及连接状态(如ESTABLISHED、TIME_WAIT等)。你需要遍历返回的TCP表,解析每个条目,找...

    Linux查看某个端口的连接数的方法

    监控这些状态可以帮助识别可能的网络问题,例如,如果`FIN_WAIT_2`或`CLOSE_WAIT`过多,可能意味着客户端或服务器在关闭连接时出现问题。 总的来说,通过上述方法,我们可以有效地监控Linux系统中特定端口的连接数...

    查看Apache并发请求数及其TCP连接状态.pdf

    - 当发现某个IP地址发起大量连接时,可以使用`netstat`命令筛选并封禁该IP,防止恶意攻击或过度使用服务器资源。 监控和理解Apache的并发请求数和TCP连接状态是服务器运维的关键技能,它可以帮助提升服务质量和...

    获取系统TCP列表的资源

    TCP连接在生命周期中会经历多个状态,包括CLOSED、LISTEN、SYN_SENT、SYN_RECV、ESTABLISHED、FIN_WAIT1、FIN_WAIT2、TIME_WAIT、CLOSE_WAIT、CLOSING、LAST_ACK等。这些状态反映了连接的不同阶段,对于分析网络性能...

    信息安全技术基础:Windows下netstat命令的使用.doc

    在日常的网络管理和安全维护中,netstat命令常用于排查网络问题,如检查是否有恶意程序占用大量连接,或找出导致网络延迟的原因。通过结合其他网络工具,如ping、traceroute等,可以更全面地诊断和解决网络问题。...

    如何查看Apache的连接数和当前连接数

    通过持续监控这些连接状态,你可以获取Apache服务器的实时运行情况,例如,如果ESTABLISHED状态的连接过多,可能意味着服务器负载较大;反之,如果TIME_WAIT状态的连接过多,可能要考虑调整服务器的TIME_WAIT超时...

    netstat的用法

    - 例如:`netstat -n`,通常与其它选项组合使用,便于快速查看网络连接的具体地址。 5. **-r**:显示路由表信息,与`route -n`类似。 - 例如:`netstat -r`,用于查看当前系统的路由规则。 6. **-t**:显示TCP...

    相关网络应用基础命令

    可以结合`find`命令(Windows)或`grep`命令(Linux)使用,如`netstat –an|find "3018"`或`netstat –an|grep 3108`,这将显示所有与指定端口相关的连接状态,如ESTABLISHED、CLOSE_WAIT、TIME_WAIT和LISTENING等...

    判断CC攻击 netstat命令详解

    `TIME_WAIT`状态通常出现在TCP连接关闭后的一段时间内,若大量连接长时间滞留在这个状态,则很可能是遭受了CC攻击。 #### 查找较多的SYN连接 ``` netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1...

    Linux运维工程师工作手册.docx

    使用`netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'`查看网络连接状态,关注`ESTABLISHED`和`TIME_WAIT`状态的连接数。 12. **处理TCP TIME_WAIT套接字**: 对于高并发场景,过多的TIME...

Global site tag (gtag.js) - Google Analytics