要让 systemd 管理的 Nginx 以指定 Nice 值运行,需通过 systemctl edit 创建覆盖配置(如 /etc/systemd/system/nginx.service.d/override.conf),在 [Service] 段添加 Nice=-5,再执行 daemon-reload 和 restart 生效;worker 进程默认继承 master 的 Nice 值,若不一致可配合 Nginx 的 worker_priority 指令补充设置。

要让 systemd 管理的 Nginx 服务以指定 Nice 值(即 CPU 调度优先级)运行,不能直接在 Nginx 配置文件里设置,而需通过 systemd 的服务单元配置覆盖机制来实现。核心是修改或创建 Nice= 字段,并重载配置生效。
确认当前 Nginx 服务的运行状态和 Nice 值
先检查 Nginx 是否由 systemd 启动,并查看其实际调度优先级:
- 运行
systemctl status nginx确认服务状态和加载路径 - 执行
ps -o pid,comm,nice -C nginx查看主进程(master)的 Nice 值,默认通常是 0 - 也可用
systemctl show nginx --property=Nice查看 systemd 当前是否设置了该属性(初始为空表示未显式配置)
使用 systemd 覆盖配置添加 Nice 参数
不建议直接编辑原始 unit 文件(如 /usr/lib/systemd/system/nginx.service),应使用 systemctl edit 创建覆盖片段:
- 运行
sudo systemctl edit nginx,会自动打开一个覆盖文件(如/etc/systemd/system/nginx.service.d/override.conf) - 输入以下内容(示例设为 -5,数值越小优先级越高,普通用户只能设 ≥ 0,root 可设 -20 到 19):
[Service]
Nice=-5 - 保存退出后,执行
sudo systemctl daemon-reload重载配置
重启 Nginx 并验证生效
修改仅对新启动的进程生效,需重启服务才能应用:
- 运行
sudo systemctl restart nginx - 再次用
ps -o pid,comm,nice -C nginx检查 master 进程 Nice 值是否已更新 - 注意:worker 进程默认继承 master 的 Nice 值,无需单独设置;若需更精细控制,可配合
IOSchedulingPriority=或CPUSchedulingPolicy=等参数
常见注意事项与限制
Nice 设置受系统策略和权限约束,容易出错的地方包括:
- 非 root 用户无法降低 Nice 值(即设负数),需确保运行 systemctl 的用户有足够权限
- 某些发行版(如 RHEL/CentOS 8+)启用了
RestrictSUIDSGID=true或安全模块,可能干扰调度策略,可临时禁用测试 - 如果 Nginx 是通过
fork()启动子进程且未显式调用setpriority(),worker 进程 Nice 值可能与 master 不一致——此时建议在 Nginx 配置中启用worker_priority指令(如worker_priority -5;)作为补充

















