问题描述:
在不考虑系统负载、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)
总结:
待定,以后再写!
分享到:
相关推荐
4. 关闭 TIME_WAIT 连接:使用 netstat -ant | grep TIME_WAIT | awk '{print $2}' | xargs kill -9 命令可以关闭 TIME_WAIT 连接。 网络连接状态详解: 网络连接状态可以分为 12 种可能的状态,前面 11 种是按照 ...
总结起来,通过以上步骤,我们可以使用Zabbix监控服务器的TCP连接状态,及时发现并处理可能存在的网络问题,例如过多的CLOSE_WAIT状态可能导致资源占用过高,而异常的TIME_WAIT状态可能指示着网络通信的问题。...
time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想 一、TCP状态介绍 1、man netstat查看TCP的各种状态信息描述: LISTEN :侦听来自...
TCP连接由源端口号、目标端口号以及各自的IP地址唯一标识,这种连接状态可以分为SYN_SENT、SYN_RECEIVED、ESTABLISHED、CLOSE_WAIT、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、CLOSED等多种状态。 在Cacti中添加TCP连接...
这个脚本可以帮助管理员监控服务器上的活跃连接,发现异常连接(如TIME_WAIT过多或被拒绝的连接),从而及时调整服务器配置,优化网络性能。 其次,Cacti是一款广泛使用的网络监控工具,它利用SNMP(简单网络管理...
此外,还有一系列其他状态的连接,如`TIME_WAIT`和`FIN_WAIT_2`,这些都是TCP连接生命周期中的一部分,反映了连接的关闭过程或者是在等待对方确认的过程中。 ### 网络管理与安全意义 了解`netstat -na`命令的输出...
`netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'`会显示不同TCP连接状态的数量,如`SYN_RECV`(等待确认的连接),`ESTABLISHED`(正常数据传输),`FIN_WAIT1`和`FIN_WAIT2`(关闭过程中的...
例如,“netstat -ano”会列出所有活动的TCP连接,包括进程ID,这对于诊断网络问题、监控应用程序的网络行为或者排查潜在的安全问题非常有用。每个条目通常包含以下信息:本地IP地址、远程IP地址、状态(如...
- `TIME_WAIT`: 连接已关闭,等待超时以确保所有数据被接收 - `CLOSING`: 双方同时尝试关闭连接 - `LAST_ACK`: 等待所有数据传输完成,然后关闭连接 - `ITMED_WAIT`: 等待一段时间确保所有数据被接收,然后关闭连接 ...
例如,大量的**TIME_WAIT**状态可能表明服务器面临资源回收的压力;而高比例的**ESTABLISHED**状态则表明服务器当前正承受着较大的访问量。 #### 四、并发连接数的优化策略 1. **调整Apache配置**:合理设置Apache...
2. **获取TCP连接信息**:使用`GetTcpTable2`函数,它能够提供关于系统当前TCP连接的详细信息,包括本地和远程IP地址、端口号以及连接状态(如ESTABLISHED、TIME_WAIT等)。你需要遍历返回的TCP表,解析每个条目,找...
监控这些状态可以帮助识别可能的网络问题,例如,如果`FIN_WAIT_2`或`CLOSE_WAIT`过多,可能意味着客户端或服务器在关闭连接时出现问题。 总的来说,通过上述方法,我们可以有效地监控Linux系统中特定端口的连接数...
- 当发现某个IP地址发起大量连接时,可以使用`netstat`命令筛选并封禁该IP,防止恶意攻击或过度使用服务器资源。 监控和理解Apache的并发请求数和TCP连接状态是服务器运维的关键技能,它可以帮助提升服务质量和...
TCP连接在生命周期中会经历多个状态,包括CLOSED、LISTEN、SYN_SENT、SYN_RECV、ESTABLISHED、FIN_WAIT1、FIN_WAIT2、TIME_WAIT、CLOSE_WAIT、CLOSING、LAST_ACK等。这些状态反映了连接的不同阶段,对于分析网络性能...
在日常的网络管理和安全维护中,netstat命令常用于排查网络问题,如检查是否有恶意程序占用大量连接,或找出导致网络延迟的原因。通过结合其他网络工具,如ping、traceroute等,可以更全面地诊断和解决网络问题。...
通过持续监控这些连接状态,你可以获取Apache服务器的实时运行情况,例如,如果ESTABLISHED状态的连接过多,可能意味着服务器负载较大;反之,如果TIME_WAIT状态的连接过多,可能要考虑调整服务器的TIME_WAIT超时...
- 例如:`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等...
`TIME_WAIT`状态通常出现在TCP连接关闭后的一段时间内,若大量连接长时间滞留在这个状态,则很可能是遭受了CC攻击。 #### 查找较多的SYN连接 ``` netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1...
使用`netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'`查看网络连接状态,关注`ESTABLISHED`和`TIME_WAIT`状态的连接数。 12. **处理TCP TIME_WAIT套接字**: 对于高并发场景,过多的TIME...