关于Linux下如何查看Nginx的并发连接数和连接状态的详细教程

如果您有服务器咨询问题、购买问题、可以联系我们客服 7271895 690624
商祺云-阿里代理、景安代理、西部代理

Linux下查看Nginx等的并发连接数和连接状态。

1、查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态:

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

或者:

netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key,”t”,state[key]}’返回结果一般如下:

LAST_ACK 5 (正在等待处理的请求数)
SYN_RECV 30 
ESTABLISHED 1597 (正常数据传输状态) 
FIN_WAIT1 51 
FIN_WAIT2 504 
TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)

其他参数说明:

CLOSED:无连接是活动的或正在进行

LISTEN:服务器在等待进入呼叫

SYN_RECV:一个连接请求已经到达,等待确认

SYN_SENT:应用已经开始,打开一个连接

ESTABLISHED:正常数据传输状态

FIN_WAIT1:应用说它已经完成

FIN_WAIT2:另一边已同意释放

ITMED_WAIT:等待所有分组死掉

CLOSING:两边同时尝试关闭

TIME_WAIT:另一边已初始化一个释放

LAST_ACK:等待所有分组死掉

常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。

TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得注意的状态有两个:CLOSE_WAIT和TIME_WAIT。

TIME_WAIT

TIME_WAIT 是主动关闭链接时形成的,等待2MSL时间,约4分钟。主要是防止最后一个ACK丢失。 由于TIME_WAIT 的时间会非常长,因此server端应尽量减少主动关闭连接

CLOSE_WAIT

CLOSE_WAIT是被动关闭连接是形成的。根据TCP状态机,服务器端收到客户端发送的FIN,则按照TCP实现发送ACK,因此进入CLOSE_WAIT状态。但如果服务器端不执行close(),就不能由CLOSE_WAIT迁移到LAST_ACK,则系统中会存在很多CLOSE_WAIT状态的连接。此时,可能是系统忙于处理读、写操作,而未将已收到FIN的连接,进行close。此时,recv/read已收到FIN的连接socket,会返回0。

为什么需要 TIME_WAIT 状态?

假设最终的ACK丢失,server将重发FIN,client必须维护TCP状态信息以便可以重发最终的ACK,否则会发送RST,结果server认为发生错误。TCP实现必须可靠地终止连接的两个方向(全双工关闭),client必须进入 TIME_WAIT 状态,因为client可能面 临重发最终ACK的情形。

为什么 TIME_WAIT 状态需要保持 2MSL 这么长的时间?

如果 TIME_WAIT 状态保持时间不足够长(比如小于2MSL),第一个连接就正常终止了。第二个拥有相同相关五元组的连接出现,而第一个连接的重复报文到达,干扰了第二个连接。TCP实现必须防止某个连接的重复报文在连接终止后出现,所以让TIME_WAIT状态保持时间足够长(2MSL),连接相应方向上的TCP报文要么完全响应完毕,要么被 丢弃。建立第二个连接的时候,不会混淆。

TIME_WAIT 和CLOSE_WAIT状态socket过多

如果服务器出了异常,百分之八九十都是下面两种情况:

1.服务器保持了大量TIME_WAIT状态

2.服务器保持了大量CLOSE_WAIT状态,简单来说CLOSE_WAIT数目过大是由于被动关闭连接处理不当导致的。

因为linux分配给一个用户的文件句柄是有限的,而TIME_WAIT和CLOSE_WAIT两种状态如果一直被保持,那么意味着对应数目的通道就一直被占着,而且是“占着茅坑不使劲”,一旦达到句柄数上限,新的请求就无法被处理了,接着就是大量Too Many Open Files异常,Tomcat崩溃。

以上就是关于Linux下如何查看Nginx的并发连接数和连接状态的详细介绍 的详细内容,更多请关注学派吧其它相关文章!

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/server/3004.html

(0)
打赏 微信扫一扫 微信扫一扫
云大使的头像云大使
上一篇 2019年1月14日 上午10:45
下一篇 2019年1月14日 上午10:45

相关推荐

  • 学派吧-Linux中ecs-centosl2tp-vpn配置案例的图文详解-linux教程

    本文示例通过 l2tp vpn 从用户本地网络连接云服务器 ECS。 注:本文只作为相关配置的指引,阿里云不对相关配置结果或参数的问题负责。 原理和优点 与 PPTP 不同,Windows 所支持的 L2TP 协议并非利用 MPPE 对 PPP 帧进行加密。L2TP 依靠 Internet 协议安全性(IPSec)技术提供加密服务。L2TP 与 IPSec …

    服务器运维 2018年12月12日
    3.7K00
  • centos如何搭建自己的邮局邮件服务器

    要求 云服务器或本地虚拟的服务器都可以。 服务器需要能链接网络。 安装centos6/7系统,需要全新干净的系统环境。 配置系统 检查swap是否已启动,如没启动需要配置启动swap。 下载EwoMail邮件服务器 在git下载EwoMail开源版 git地址:https://gitee.com/laowu5/EwoMail EwoMail集成的软件: Po…

    2018年9月14日
    10.2K00
  • 腾讯云宝塔centos使用yum时报 Error: rpmdb open failed的解决办法

    在centos系统上,在使用yum命令安装软件包时候报错: error: rpmdb: BDB0113 Thread/process 2229/140657048729600 failed: BDB1507 Thread died in Berkeley DB library error: db5 error(-30973) from dbenv->f…

    2021年3月15日
    2.6K00
  • Linux学习二之Java环境安装配置图文教程方法

    这篇文章主要为大家详细介绍了Linux学习第二篇,Java环境安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 如果您有服务器咨询问题、购买问题、可以联系我们客服 7271895 690624商祺云-阿里代理、景安代理、西部代理 本文教程为大家分享了Java环境安装配置,供大家参考,具体内容如下 jdk版本:jdk-8u131-linux-x6…

    2019年1月4日
    1.7K00
  • 关于普通云盘和SSD云盘添加挂载信息区别和注意事项-学派吧

    本篇文章给大家带来的内容是关于普通云盘和SSD云盘添加挂载信息时的注意事项,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 普通云盘和SSD云盘添加挂载信息时的注意事项 Linux系统添加数据盘时,按照 Linux 系统挂载数据盘 第5步添加分区信息时要注意,/dev/xvdb1是普通云盘的挂载点,如果使用的是SSD云盘,挂载点为/dev/v…

    服务器运维 2018年11月24日
    2.6K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部
---------官方优惠叠加渠道折扣:通过我们购买腾讯云/阿里云,价格更低,服务更优。更有专业配置指导与服务。微信同步:18838889666----