记一次Discuz卡死PHP进程排查
2014-12-04 tech

今天晚上帮一个用户检查网站
他的症状是这样子的:
刷新页面,四到五次中有一次会出现一次超长执行时间,长至10s。
刚开始搬上debug工具帮他排查是否是插件导致的SQL查询不规范
结果一查,SQL执行时间很正常
好吧,怀疑是核心调用某个PHP执行的时候占了超长的时间
想用XDebug排查,却发现每次挂载XDebug扩展打开页面只能跑一半,然后blank了
好吧…无力了

这时候,尝试着关几个插件看看,是不是插件文件的问题,也失望了。
好,想起可能是DNS的问题(DNS跪了可能会导致PHP去外部获取数据的时候卡死),
改DNS,然后再试,又失败了。。。
正当放弃的时候,顺手右键查看源码看看页面会不会有出什么诡异的东西。
果不其然,多出了一个sendmail的script调用(见图)

this.jpg

感觉很蹊跷,然后直接访问这个链接,也是卡死到10s的状态
好吧,然后排查这个模块,排查到最后,恩…
发现有一个sendmail锁,在data/sendmail.lock位置
删掉之后,就不会再在页面底部出现这玩意了
但是估计最终的原因,可能是服务器的邮件发送服务跪了,或者机房策略限制了这块吧。。。
总之解决就好!真是蛮拼的!