Linux教程之Nginx的并发连接数和连接状态查询
发布时间 - 2017-08-22 00:00:00 点击率:次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
# 第二个
# 第一个
# 句柄
# 两种
# 重发
# 死掉
# 都是
# 出了
# 很有
# 就不能
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
海南网站制作公司有哪些,海口网是哪家的?
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何快速搭建高效香港服务器网站?
jQuery中的100个技巧汇总
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
详解vue.js组件化开发实践
如何在阿里云购买域名并搭建网站?
Laravel怎么在Controller之外的地方验证数据
如何在腾讯云服务器快速搭建个人网站?
如何在Tomcat中配置并部署网站项目?
百度浏览器如何管理插件 百度浏览器插件管理方法
独立制作一个网站多少钱,建立网站需要花多少钱?
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
浅述节点的创建及常见功能的实现
简单实现Android文件上传
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
Laravel观察者模式如何使用_Laravel Model Observer配置
详解jQuery中的事件
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Laravel怎么清理缓存_Laravel optimize clear命令详解
java ZXing生成二维码及条码实例分享
Laravel Session怎么存储_Laravel Session驱动配置详解
Java解压缩zip - 解压缩多个文件或文件夹实例
Android仿QQ列表左滑删除操作
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
nginx修改上传文件大小限制的方法
如何确认建站备案号应放置的具体位置?
linux top下的 minerd 木马清除方法
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
详解Huffman编码算法之Java实现
香港服务器建站指南:免备案优势与SEO优化技巧全解析
JS经典正则表达式笔试题汇总
JavaScript常见的五种数组去重的方式
音乐网站服务器如何优化API响应速度?
如何基于PHP生成高效IDC网络公司建站源码?
手机网站制作与建设方案,手机网站如何建设?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
jQuery 常见小例汇总
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何在IIS管理器中快速创建并配置网站?
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
如何利用DOS批处理实现定时关机操作详解
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?

