监控面板上 5xx 比例从千分之一涨到百分之三,点开静态图片也报 500,重启 PHP 和 nginx 都没有任何变化,整站像被按了暂停。乍看像缓存或者权限的锅,追下去往往不是。
L=/var/log/nginx/access.log
grep -oE ' 5[0-9]{2} ' $L | sort | uniq -c | sort -rn
df -h /var; df -i /var
追下去是这么回事:磁盘被日志写到只剩几百兆,nginx 连临时目录都建不出来,proxy_temp 一旦创建失败,静态请求也会返回 500,重启多少次都没用,跟应用层没有关系。
「5xx 率上升」这类改动最怕改一半,回滚脚本先准备好,再动生产。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。
具体做法是,先把 5xx 按 URI 分一下组,看错误是不是集中在动态页面;把 df -h 和 df -i 同时看一遍,磁盘空间和 inode 两个指标都别落下;腾出空间后确认临时目录可写,再回头观察 5xx 的比例。
验收就看一点,5xx 比例回到千分之一以下,静态图片请求不再出现在错误列表里。
