nginx 的 master process 不进行资源统计,所有 cpu、内存、连接数和请求量等指标均由 worker 进程独立产生;获取整体资源使用需直接监控 worker 或借助 stub_status、共享内存模块(如 vts)、访问日志外部分析等手段。

Nginx 的 Master Process 不进行进程资源统计。它本身不采集、不聚合、也不维护任何关于 CPU、内存、连接数或请求量的运行时指标。
它的职责是管理——读配置、拉起 Worker、响应信号、平滑重启、监控子进程存活性。所有实际的资源消耗和业务指标,都由 Worker 进程各自独立产生并持有。
所以,“Master 进行资源统计”这个说法在 Nginx 原生架构中并不成立。你需要的是如何获取 Nginx 整体资源使用情况,而这个过程必然绕过 Master,直接面向 Worker 或借助外部手段。
如何获取 Worker 进程的 CPU 与内存占用
这是最常用、最直接的方式,因为资源消耗主体就是 Worker:
-
查看各 Worker 的物理内存(RSS)和 CPU 占用:
ps -o pid,user,%cpu,%mem,rss,vsz,comm -C nginx | grep worker
-
按内存从高到低排序,快速定位异常 Worker:
ps aux --sort=-%mem | grep "[w]orker"
-
查看某个 Worker 的详细内存分布(需 root 或同用户权限):
pmap -x <worker_pid></worker_pid>
注意:ps aux 中 RSS(常驻内存)比 VSZ(虚拟内存)更能反映真实内存压力;单个 Worker 通常占用几十 MB,若持续超 200MB,需排查是否缓存过大、body 缓冲设置过高或存在内存泄漏。
如何统计活跃连接与请求类指标
这类数据每个 Worker 独立维护,没有全局变量。常见做法有三种:
-
stub_status 暴露 + 脚本聚合
启用ngx_http_stub_status_module,为每个 Worker 绑定本地端口(如127.0.0.1:8080、:8081等),再用脚本并发请求并累加:Active connections: 123 server accepts handled requests 123456 123456 234567 Reading: 5 Writing: 12 Waiting: 106
总请求数 = 所有 Worker 的
requests字段之和。 共享内存模块(如 vts)
使用nginx-module-vts等第三方模块,将统计写入shared memory zone,多个 Worker 可读写同一区域,实现近实时聚合,输出 JSON 接口供监控系统调用。访问日志 + 外部分析
将access_log输出到文件或转发至 Kafka/Fluentd,再由 Prometheus + nginxlog-exporter 或 Logstash 解析,按时间窗口汇总 QPS、状态码分布、响应时间 P95 等。
如何确认 Master 与 Worker 的资源归属关系
避免误判的关键是验证实际运行身份和父子关系:
-
区分 Master 和 Worker:
ps -eo pid,ppid,user,comm,args | grep nginx
- Master 的
PPID通常是1(systemd)或 shell PID,USER是root,ARGS含master process - Worker 的
PPID是 Master 的PID,USER是配置的非特权用户(如www-data)
- Master 的
-
检查 Worker 是否真以降权用户运行:
ls -l /proc/$(pgrep -f "nginx: worker" | head -1)/status 2>/dev/null | grep -E 'Uid|Gid'
输出应显示
Uid: 33 33 33 33(对应 www-data UID),而非0 0 0 0。 验证日志与临时目录权限是否匹配该用户,否则 Worker 会因权限失败退出或静默丢请求。
不推荐依赖 Master 的“伪统计”方式
-
nginx -s reload或kill -HUP后观察进程数变化,只能反映生命周期,不是资源统计 -
nginx -T输出完整配置,有助于排查是否误配worker_processes导致进程过多,但不提供运行时数据 - Master 收到
CHLD信号后回收僵尸 Worker,仅说明子进程退出,无法推断其退出前的资源占用
真正有效的资源监控,必须基于 Worker 进程本身或其输出(日志、status 接口、共享内存),而不是等待 Master “汇报”。
不复杂但容易忽略。











