nginx反向代理 tomcat 出现大量 established 太多_netstat监控大量ESTABLISHED连接数

查看网络连接数

本文将讲述 ESTABLISHED 过多的优化方法

#命令说明
netstat -an |wc -l
netstat -an |grep xx |wc -l         #查看某个/特定ip的连接数
netstat -an |grep TIME_WAIT|wc -l   #查看连接数等待time_wait状态连接数
netstat -an |grep ESTABLISHED |wc -l    #查看建立稳定连接数量

排错步骤(一)

#查看稳定连接数TOP10
[root@web-gateway1 ~]# netstat -nta|awk '{print $5}'|awk -F ':' '{print $1}'|sort |uniq -c|sort -rn|head -n 10
    440 10.68.39.130
    423 10.68.39.131
    112 10.68.39.108
    101 10.68.39.109
     88 10.68.39.107
     55 10.67.20.37
     47 10.78.120.40
     42 10.78.46.22
     41 10.80.152.158
     41 10.78.114.101
#由此可见10.68.39.130/131 连接库最多440/423个

10.68.39.130 10.68.39.131 是两台tomcat服务器

排错步骤(二)

10.68.39.130 上执行

[root@quartz-push1 data]# netstat -nta|grep ESTABLISHED
tcp6       0      0 10.68.39.130:8068       10.68.39.120:60748      ESTABLISHED
tcp6       0      0 10.68.39.130:8068       10.68.39.120:52276      ESTABLISHED
tcp6       0      0 10.68.39.130:8068       10.68.39.120:53004      ESTABLISHED
tcp6       0      0 10.68.39.130:8068       10.68.39.120:58402      ESTABLISHED
tcp6       0      0 10.68.39.130:8068       10.68.39.120:57302      ESTABLISHED
tcp6       0      0 10.68.39.130:8068       10.68.39.120:37846      ESTABLISHED

# 看到全部是到10.68.39.130服务器的链接

# 统计一下有多少连接
[root@quartz-push1 data]# netstat -nta|grep 10.68.39.130:8068|grep ES|wc -l
    440    
# 请求结束后依然存在大量ESTABLISHED没有被释放

排错步骤(三)

10.68.39.130 8068端口连接数

8068端口所启动的服务是tomcat

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

查看tomcat的配置文件server.xml
    <Connector executor="tomcatThreadPool"
               port="8068" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               connectionTimeout="20000"
               enableLookups="false"
               acceptCount="1000"
               maxPostSize="-1"
               maxHttpHeaderSize="8192"
               compression="on"
               disableUploadTimeout="true"
               compressionMinSize="2048"
               acceptorThreadCount="2"
               compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
               server="head S1"
               URIEncoding="UTF-8" 
    />

connectionTimeout=”20000″ 改为 connectionTimeout=”2000″ 
acceptCount=”100″ 改为 acceptCount=”5000″


参数说明:
connectionTimeout=2000 Connector接受一个连接后等待的时间(milliseconds),默认值是60000。 连接超时2s,没数据了之后2秒就断,别等这么久
acceptCount 等待队列的长度,默认值是100。
keepAliveTimeout 在Connector关闭连接前,Connector为另外一个请求Keep Alive所等待的微妙数,默认值和 connectionTimeout 一样。

优化完毕,这样设置之后,问题得到完美解决。

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原创文章,作者:老C,如若转载,请注明出处:https://www.code404.icu/190.html

发表评论

登录后才能评论