这个坑值得记一笔。改完配置执行重载没有任何报错,可页面行为一点没变,重启进程之后才恢复正常。

把日志和配置对完,能解释这个现象的基本就这几处。重载信号发给了旧的主进程,新配置没有被加载;配置写在没有被 include 的文件里;前置还有一层代理,实际命中的不是这台机器。

校验配置语法和实际加载内容

nginx -t && nginx -T | head -20

随后确认主进程号与信号目标

cat /run/nginx.pid && ps -o pid,cmd -p $(cat /run/nginx.pid)

发送重载信号并看日志

nginx -s reload && tail -5 /var/log/nginx/error.log

剩下的就是确认监听进程已更新

ss -lntp | grep nginx

同事提醒我看一下最近一次发布,时间点确实对得上。

命令输出我都留了记录,免得改完记不清原来的值。

别只看报错消失,验证要多做一步。错误日志里出现重新配置的提示,页面行为与新配置一致,无需重启进程。

重载只是让工作进程重新读取配置,如果改的是系统级参数比如句柄上限,还是得重启服务。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189