如何跟踪和调试挂起的apache进程

时间:2015-02-18 08:59:37

标签: php mysql apache trace dtrace

我的PHP后端有问题我无法理解。在请求API时,我经历了间歇性的“挂起”某些apache进程(PHP代码返回json)。

Apache永远无法提供文件(html,css,js等),只是有限数量的API调用会触发问题。该请求在Chrome开发工具“网络”标签中处于待处理状态,即使我运行apachectl restart,请求在重新启动后仍处于待处理状态。我可以看到,当我运行httpd时,所有apachectl stop进程都不会停止。我必须用killall -9 httpd杀死他们。

当问题发生时,我必须停止Apache,杀死所有httpd进程,然后再次启动apache。如果我没有重新启动大多数API调用挂起(可能是分配给挂起子进程的那些)。

触发问题的API调用包括对MySQL的调用。

检查mysql服务器上的进程列表,建立连接但处于SLEEP状态。

问题听起来像是代码问题还是配置问题?

错误日志(mysql和apache)没有显示任何内容,所以我想我应该尝试strace(mac上的dtruss?)apache进程。 我该怎么做?

-

环境:

  • OS X 10.10.2 Yosemite
  • Apache / 2.4.9(Unix) - 与os x一起安装
  • MySQL 5.6.22(Homebrew) - innodb,mysqli接口,非持久连接
  • PHP 5.6.5(Homebrew) - php56,mcrypt,php56-mcrypt,php56-apcu,php56-xdebug

0 个答案:

没有答案