Active connections在reload后应2–3秒内回落,若持续高于 reload 前值超5秒且Waiting占比超70%,表明新worker启动延迟或配置阻塞;需程序化采集stub_status、拆解Reading/Writing/Waiting状态,并关联error.log和worker进程启动时间验证。

重载 Nginx 配置(nginx -s reload)时,Active connections 的突变是最直观的抖动信号。监控关键不在“有没有变”,而在于“怎么变、变多少、持续多久”——这直接反映 worker 进程是否平稳承接流量。
盯住 reload 前后 30 秒内的 Active connections 趋势
Active connections 不应出现断崖式跳升或长时间滞高。正常重载过程里,它通常会:
- reload 瞬间小幅上升(旧连接未退出 + 新连接涌入),但 2–3 秒内回落至 reload 前水平
- Waiting 数值短暂升高(说明 keepalive 连接在排队等待新 worker 处理),随后快速下降
- 若 Active connections 持续 > reload 前值 5 秒以上,且 Waiting 占比超 70%,说明新 worker 启动延迟或配置阻塞了连接接纳
用 stub_status + 自动化采集抓准时间点
手动刷页面来不及捕捉 1–5 秒抖动,必须程序化采集:
- 在执行
nginx -s reload前 5 秒启动脚本,每 0.5 秒请求一次http://127.0.0.1/nginx-status - 用正则提取:
curl -s 127.0.0.1/nginx-status | grep "Active connections" | sed -r 's/.*Active connections: ([0-9]+).*/\1/' - 把结果连同时间戳写入临时文件,reload 完成后再追加 10 秒数据,形成完整窗口序列
结合 Reading/Writing/Waiting 拆解异常类型
只看总数容易误判,要分项看行为:
- Reading 突增 + Active 上升:可能新配置中某些 location 触发了更复杂的请求头解析(如大量 rewrite 或 auth_request)
- Writing 滞留不降:proxy_pass 目标响应变慢,或 upstream timeout 设置不合理,导致响应体发送卡在 worker
-
Waiting 长期高位:keepalive 超时未生效、或新配置里
keepalive_timeout被意外覆盖为极大值,连接堆积在空闲状态
关联 error.log 和进程启动时间交叉验证
数值异常时,立刻查两件事:
- 执行
tail -n 20 /var/log/nginx/error.log,确认有无upstream prematurely closed connection或connect() failed (111: Connection refused)—— 这类错误常和 Active 异常同步发生 - 运行
ps -eo pid,comm,lstart | grep nginx | grep worker,对比 worker 进程启动时间与 reload 时间戳:若仍有早于 reload 5 秒以上的 worker 在运行,且其lsof -p PID | wc -l不下降,说明旧进程卡死,需人工介入


















