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复用连接)。

(3)Reading/Writing/Waiting

  • Reading0

    • 当前没有连接处于读取请求头的状态。若值持续较高,可能客户端上传数据慢或请求头过大。
  • Writing21

    • 21个连接正在发送响应或处理后端数据。高值可能表示后端服务响应慢或客户端下载速度低。
  • Waiting1943

    • 1943个连接处于空闲保持状态(Keepalive)。若值过高,可能需调整keepalive_timeout减少空闲连接。

3. 关键公式与推导

  1. 活跃连接组成

    Active connections = Reading + Writing + Waiting
    1964 = 0 + 21 + 1943
    
  2. 连接效率

    • 平均每个连接处理的请求数:
      requests / accepts = 1246833717 / 289342958 ≈ 4.31(请求/连接)
      
    • 说明HTTP Keepalive复用效果较好(单个连接处理了约4个请求)。
  3. 空闲连接占比

    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激增)。

posted @ 2025-10-16 16:33  蓝迷梦  阅读(42)  评论(0)    收藏  举报