nginx 【二 stub_status】
这是NGINX的stub_status模块输出的实时状态信息,用于监控服务器的连接和请求处理情况。以下是对每个指标的详细解析:
1. 状态输出示例
Active connections: 1964
server accepts handled requests
289342958 289342958 1246833717
Reading: 0 Writing: 21 Waiting: 1943
2. 指标解析
(1)Active connections
- 含义:当前所有活跃的连接数(包括正在处理和空闲保持的连接)。
- 示例值:
1964 - 细分:
- Reading:NGINX正在读取客户端请求头的连接数(如接收HTTP请求头)。
- Writing:NGINX正在向客户端发送响应或处理后端数据的连接数(如返回响应体、读取后端响应)。
- Waiting:保持打开的空闲连接(如HTTP Keepalive连接,等待新请求)。
(2)server accepts handled requests
-
三列数据:
accepts(已接受连接数) |handled(已处理连接数) |requests(总请求数) -
示例值:
289342958 289342958 1246833717 -
关键点:
- accepts == handled:表示所有接受的连接都被成功处理(无丢弃连接)。若
accepts > handled,可能因后端故障或资源限制导致连接被拒绝。 - requests >> accepts:单个连接可能处理多个请求(如HTTP Keepalive复用连接)。
- accepts == handled:表示所有接受的连接都被成功处理(无丢弃连接)。若
(3)Reading/Writing/Waiting
-
Reading:
0- 当前没有连接处于读取请求头的状态。若值持续较高,可能客户端上传数据慢或请求头过大。
-
Writing:
21- 21个连接正在发送响应或处理后端数据。高值可能表示后端服务响应慢或客户端下载速度低。
-
Waiting:
1943- 1943个连接处于空闲保持状态(Keepalive)。若值过高,可能需调整
keepalive_timeout减少空闲连接。
- 1943个连接处于空闲保持状态(Keepalive)。若值过高,可能需调整
3. 关键公式与推导
-
活跃连接组成:
Active connections = Reading + Writing + Waiting 1964 = 0 + 21 + 1943 -
连接效率:
- 平均每个连接处理的请求数:
requests / accepts = 1246833717 / 289342958 ≈ 4.31(请求/连接) - 说明HTTP Keepalive复用效果较好(单个连接处理了约4个请求)。
- 平均每个连接处理的请求数:
-
空闲连接占比:
Waiting / Active connections = 1943 / 1964 ≈ 99%- 大部分活跃连接处于空闲状态,可能需优化
keepalive_timeout(如设为30s)。
- 大部分活跃连接处于空闲状态,可能需优化
4. 异常场景分析
-
Reading持续较高:
- 客户端上传速度慢(如大文件上传)。
- 可能遭受恶意请求(如超大请求头攻击)。
- 建议:检查客户端行为或限制请求头大小(
client_header_buffer_size)。
-
Writing持续较高:
- 后端服务响应慢(如数据库查询卡顿)。
- 客户端下载速度低(如网络拥塞)。
- 建议:优化后端服务或调整
proxy_timeout。
-
Waiting堆积:
- 空闲连接过多,消耗服务器资源。
- 建议:缩短
keepalive_timeout(如10s)或减少keepalive_requests。
5. 配置stub_status
在NGINX中启用状态监控:
server {
location /nginx_status {
stub_status;
allow 127.0.0.1; # 仅允许本地访问
deny all;
}
}
访问:curl http://127.0.0.1/nginx_status
6. 监控工具集成
- Prometheus + Grafana:
使用nginx-prometheus-exporter采集stub_status数据并可视化。 - Zabbix/TIGK:
通过脚本定期抓取状态数据并报警。
总结
- 活跃连接:1964个(21个正在处理,1943个空闲)。
- 连接效率:HTTP Keepalive复用良好(4.31请求/连接)。
- 潜在优化点:
- 若
Reading/Writing异常,检查客户端/后端性能。 - 若
Waiting过多,调整Keepalive参数。
- 若
通过监控这些指标,可以快速定位连接瓶颈或攻击行为(如CC攻击导致Writing激增)。
本文来自博客园,作者:蓝迷梦,转载请注明原文链接:https://www.cnblogs.com/hewei-blogs/articles/19146000

浙公网安备 33010602011771号