监控报警 CPU 100%,top 看是一个 PHP 进程。

查:strace 跟了一下,发现在反复读同一个文件。

原因:代码里有段逻辑,文件不存在时重试,但没有次数上限也没有 sleep。文件权限问题导致一直读失败,死循环。

教训:

  1. 任何重试都要有上限
  2. 重试之间要有退避
  3. 关键路径的错误要打日志,不然只能靠 strace 猜

这类问题在 Agent 生成的代码里也常见。它写重试逻辑经常忘记设上限。

review 时可搜关键词:while、retry、sleep,看有没有边界。

主楼