Linux系统下Nginx连接池当前状态完整查看方法详解
检查Nginx连接池状态需访问 nginx_status端点,前提是编译并配置ngx_http_stub_status_module。页面显示Activeconnections、accepts handled、Reading Writing Waiting等。也可用ss命令统计TCP连接,重点关注TIME_WAIT数量。
排查 Nginx 连接池状态时,最直接的方法就是检查 /nginx_status 端点。然而,很多人在配置完成后,满心期待地访问,却只看到 404 或 403 错误,令人困惑。问题通常出在两个地方:一是 Nginx 编译时未包含 ngx_http_stub_status_module 模块,二是配置细节出现遗漏。
验证模块是否已启用,一条命令即可搞定:直接运行 nginx -V 2>&1 | grep -o with-http_stub_status_module。如果有输出,说明模块已就绪;若没有输出,则需要重新编译 Nginx,或更换软件包。例如,在 Ubuntu 下,nginx-full 通常自带该模块,而轻量级的 nginx-light 则不包含。
假设模块确认存在,配置也写好了,但仍然无法访问?那多半是忽略了以下三个细节中的至少一个。
配置 /nginx_status 时最容易忽略的三件事
第一,stub_status on; 这条指令必须放置在 location 块内才能生效。如果写在 server 块或 http 块中,Nginx 会直接忽略。第二,访问控制的 allow 和 deny 指令顺序绝不能颠倒。如果写成 deny all; allow 127.0.0.1;,那么所有请求都会被拒绝,因为 Nginx 会按顺序逐条检查规则。正确的做法是:先写 allow,再写 deny all。第三,检查监听地址是否匹配。很多服务器上运行着多个 server 块,都监听 80 端口。如果你只在其中一个块中配置了 /nginx_status,而你访问的域名恰好命中另一个块,自然就会返回 404。
好,配置搞定后,来看看通过 curl 访问 /nginx_status 返回的信息到底说明了什么。
看懂 status 页面上的几个关键数值
成功访问后,你大概会看到类似下面的输出:
Active connections: 12 server accepts handled requests 123456 123456 234567 Reading: 2 Writing: 5 Waiting: 5
其中,Active connections 表示当前所有活跃的 TCP 连接数——它包括了正在读取请求头的连接、正在写响应的连接,以及处于 keepalive 空闲状态等待新请求的连接,并非单纯的并发请求数。而 accepts 和 handled 这两个数值,分别代表 Nginx 启动以来接受的连接总数和成功处理的连接数。如果两者相等,说明 Nginx 从未拒绝过连接,这是一个不错的信号。
下面三行则更具实时性:Reading 表示 Nginx 正在读取请求头的连接数,Writing 表示正在向客户端发送响应的连接数,而 Waiting 是最容易被忽视的——那些已经处理完请求、仍在 keepalive 中等待下一个请求的空闲连接。这三个数字能直接反映当前连接池的“心跳”节奏。
即使没有 stub_status,也能大致判断压力状况
当然,有些场景下你无法修改配置,或者模块无法安装。这时,系统级命令也能帮你粗略估算压力。例如,使用 ss -ant 'sport = :80' | wc -l 来统计 80 端口上的 ESTABLISHED 连接,速度比 netstat 快得多。也可以更精确地过滤出与 Nginx 相关的连接:ss -ant state established '( sport = :80 or dport = :80 )' | wc -l。
另外,TIME_WAIT 的数量值得特别关注。用 ss -ant state time-wait '( sport = :80 or dport = :80 )' | wc -l 看一眼,如果这个值长期高于 2000,说明短连接过于频繁,就需要考虑调优 keepalive_timeout,或者排查客户端是否存在问题。
这里需要特别说明:ss 统计的是内核级别的 TCP 状态,与 stub_status 中的 Active connections 虽然接近,但并不完全等价。因为 stub_status 还包含了那些处于 keepalive 空闲状态但尚未断开连接,而 ss 仅反映内核中实际的连接状态。
实际上,观察连接池压力时,最重要的不是盯着某个绝对数值,而是关注比例。真正有价值的是 Waiting 占 Active connections 的百分比。如果这个比例长期低于 10%,说明 keepalive 机制基本没有发挥作用,连接用完就断,白白浪费了握手开销。如果长期高于 80%,则问题可能更大——要么是后端响应太慢,导致请求排队;要么是客户端请求过于频繁,使大量连接卡在 Waiting 状态无法释放。这才是需要警惕的信号。

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
如何用Linux查看网络数据包在内核的流向
tcpdump在链路层入口后、IP层解析前捕获,可看到MAC地址等头部;perf配合kprobe可跟踪skb在内核中的函数调用路径; proc net snmp等文件通过协议栈丢包计数反映流向瓶颈;iptablesTRACE仅在netfilter钩子打日志,不适合追踪真实流向。需交叉验证多种工具。
如何在CentOS 7中修改文件系统配额的具体操作步骤
修改XFS文件系统配额时,需先在 etc fstab挂载点启用uquota或gquota选项,然后重新挂载文件系统使配额生效。之后以xfs_quota-x专家模式为用户或组设置软硬限制。修改后务必执行report命令验证,并检查输出确保限制值已写入且用量被正确统计。
Linux查看具体硬件驱动列表的命令
在Linux系统中,查看硬件驱动列表,可使用lsmod命令查看已加载模块(但内置驱动不显示),使用lspci-k命令查看PCI设备当前驱动,使用lsusb-t命令查看USB设备驱动。需特别注意驱动与固件缺失问题,使用dmesg|grepfirmware命令可辅助排查驱动和固件缺失。
电脑0x800401f3无效类字符串系统底层报错解决
错误0x800401f3无效的类字符串,因系统找不到COM组件注册信息或权限不足导致。需先定位出错组件的ProgID,检查注册表HKEY_CLASSES_ROOT下对应项是否存在,若缺失则使用regsvr32命令重新注册对应的DLL文件,再修改ProgID及CLSID子项的权限,赋予Everyone完全控制,最后重启IIS服务或相关应用程序池使更改生效。
统信UOS更换系统图标包详细教程
统信UOS更换系统图标包可通过三种途径实现:控制中心直接切换已安装主题、手动复制图标包至用户目录并更新缓存、使用深度商店一键安装。三种方式分别适合不同技术能力的用户,均能即时生效,提升操作效率与视觉体验。
- 热门数据榜
相关攻略
2026-07-10 07:19
2026-07-10 07:19
2026-07-10 07:19
2026-07-10 07:19
2026-07-10 07:18
2026-07-10 07:18
2026-07-10 07:18
2026-07-10 07:18
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

