waiting是当前已处理完请求、保持打开且等待复用的keepalive空闲连接数,等于active − reading − writing,反映http/1.1长连接的休眠态,属active的一部分但不参与实时收发。

直接看 Waiting 这个值,它就是当前活跃的 Keep-Alive 连接数。
Waiting 字段的准确含义
Waiting 表示已建立 TCP 连接、完成 HTTP 请求处理、且仍保持长连接打开状态,正等待客户端发起下一个请求的空闲连接。它属于 Active connections 的一部分,但不参与当前的数据收发(既不是 Reading,也不是 Writing)。
公式上:Waiting = Active connections − Reading − Writing
这个值高是正常现象,尤其在启用了 keep-alive 且客户端复用连接频繁时;但如果持续极高且伴随响应延迟或超时,则可能说明连接未被及时释放,需检查 client_header_timeout、keepalive_timeout 等参数是否过长。
如何获取 Waiting 值
前提是已启用 http_stub_status_module 模块,并配置了 status 接口:
- 在 server 块中添加 location:
location /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
- 重载 Nginx 配置后,用 curl 获取原始输出:
curl -s http://localhost/nginx-status - 提取 Waiting 数值(Linux/macOS):
curl -s http://localhost/nginx-status | awk '/Waiting/ {print $2}' - Windows 用户可用 PowerShell 或借助 phpEnv 面板访问
http://127.0.0.1/nginx-status直观查看
Waiting 和其他连接状态的区别
避免混淆这几个关键状态:
- Active connections:所有处于 ESTABLISHED 状态的 TCP 连接总数(含 Reading、Writing、Waiting)
- Reading:正在接收请求头的连接,通常极小(个位数),说明请求尚未完整抵达
- Writing:正在向客户端发送响应体的连接,是实际吞吐的关键指标
- Waiting:请求已处理完毕、连接未关闭、处于空闲监听状态——这才是真正的活跃 Keep-Alive 连接
辅助验证方式(非 stub_status)
若无法启用 stub_status,可通过系统命令粗略估算:
- Linux:
ss -tn state established '( sport = :80 or sport = :443 )' | wc -l(统计所有到 Nginx 端口的 ESTABLISHED 连接) - Windows:
netstat -an | findstr ":80" | findstr "ESTABLISHED" | find /c ":"
注意:该数值 ≈ Active connections,但无法区分 Reading/Writing/Waiting,不能直接替代 Waiting 值。











