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

Php 如何跟踪和调试挂起的apache进程,php,mysql,apache,trace,dtrace,Php,Mysql,Apache,Trace,Dtrace,我的PHP后端有一个问题,我无法解决。我在请求API(返回json的PHP代码)时遇到一些apache进程的间歇性“挂起” Apache从来都不会不交付文件(html、css、js等),触发问题的只是数量有限的API调用。请求在Chrome开发工具的“网络”选项卡中处于挂起状态,即使我运行apachectl restart重新启动后,请求仍处于挂起状态。我可以看到,当我运行apachectl stop时,所有httpd进程都不会停止。我必须用killall-9httpd杀死他们 当问题发生时,我

我的PHP后端有一个问题,我无法解决。我在请求API(返回json的PHP代码)时遇到一些apache进程的间歇性“挂起”

Apache从来都不会不交付文件(html、css、js等),触发问题的只是数量有限的API调用。请求在Chrome开发工具的“网络”选项卡中处于挂起状态,即使我运行
apachectl restart
重新启动后,请求仍处于挂起状态。我可以看到,当我运行
apachectl stop
时,所有
httpd
进程都不会停止。我必须用
killall-9httpd
杀死他们

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

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

检查mysql服务器上的processlist,连接已建立,但处于睡眠状态

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

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

--

环境:

  • OS X 10.10.2约塞米蒂
  • Apache/2.4.9(Unix)-与os x一起安装
  • MySQL 5.6.22(自制)-innodb、mysqli接口、非持久连接
  • PHP5.6.5(自制)-php56、mcrypt、php56、mcrypt、php56 apcu、php56 xdebug