记一次LOCK_EX导致的504错误

 

页面访问,直接504。

寻找问题

0x01

查看日志记录,应用没有日志,nginx超时后有日志。应该是到了Nginx,但是具体到应用哪里不清楚。

0x02

  1. 应用入口打输出,直接显示。说明访问到了应用。
  2. 程序末尾处打输出,直接显示。说明程序过程没有问题。
  3. 最后在打日志的位置发现问题。
file_put_contents($file_path, $message . "\\n", FILE_APPEND | LOCK_EX)

0x03

问题应该是LOCK_EX的某次句柄没有释放,导致后续的都不能写日志。

结合早上发现服务器的空间不足的原因,ps看了下php脚本执行,发现有十几个脚本还在执行。

应该是,凌晨脚本执行完的时候需要打日志,但是磁盘空间不足,导致一直等待。后续的请求写日志也会一直等待。

解决

嗯。。。清理磁盘空间,干掉等待的脚本。完事~