如何debugging从Apache的超时错误?

我不确定这个问题是属于ServerFault还是StackOverflow,但是由于我在猜测我需要在服务器端debugging这个问题,所以我将使用ServerFault。

问题

我们为我们的一些客户运行共享的虚拟主机服务器。 除了一个客户他们的网站,一切都运行顺利。 大约每周2到3天,我们的显示器检测到一个短暂的停机时间,因为apache在30秒内没有提供页面,而是在60到120秒之间。 我用自己的桌面检查一次,确认:网站持续加载了80秒,然后突然加载。 没有增加的负载,没有更多的请求比正常和服务器上的其他网站加载完美。

我们早些时候遇到了一个特定插件的问题:这个插件与作者的服务器联系,以确认许可证密钥。 当这个服务器无法访问,Wordpress无法继续加载和现在有相同的症状。 我们注意到了这一点,因为有一天他们的服务器closures了几个小时,我们有时间禁用和启用所有的插件,一个接一个。 据插件作者介绍,现在问题解决了。

我有强烈的感觉,我们再次看到同样的问题,也许有相同的插件,也许没有。 但是由于停机时间非常短暂(通常不超过2分钟),所以我不知道如何debugging这个超时错误。

我想到的东西

通常我会一个接一个地禁用插件,但在连接到数据库以禁用插件之前,网站又重新启动了。 由于在停机时间中没有任何模式,所以在发生这种情况时我无法保持等待状态。 Apache日志不显示任何错误:我只能看到来自用户的请求,并看到有一段时间没有服务的文件。

我的第二个想法是在apache进程上运行一个堆栈跟踪。 我很确定这将揭示Apache等待这么久的地方。 但是由于服务器每分钟获得30多个请求,日志文件在几个小时内就会变得非常大,这使我们无法find正确的请求。

相关的服务器规格

CentOS Linux release 7.0.1406 (Core) Kernel 3.10.0-123.el7.x86_64 Apache/2.4.12 with mod_ruid2 PHP 5.4.38 (cli) mysql Ver 15.1 Distrib 5.5.41-MariaDB, for Linux (x86_64) using readline 5.1 All compiled by DirectAdmin 1.48.3 

想法?

谁能想到一个很好的方法来debugging这个非常具体的问题? 任何帮助是极大的赞赏!

编辑:

  • 在缓慢的请求期间,慢速查询日志不会报告任何缓慢的查询。

如果Apache仍然可以访问,我会首先抓取扩展状态页面,看看现在正在提供什么请求。 如果有一个长时间的运行请求,你甚至可以对它进行压缩,pid应该在状态中可见(因为你有mod_ruid2,我猜你运行的是mod_php和prefork MPM,所以一个进程一次只能处理一个请求)。

也许重新configurationCustomlog,并logging服务请求所用的时间,以便稍后您可以识别缓慢的请求。

一旦你的请求缓慢,看看是否可以复制。 如果是,那么它更容易debugging,甚至可以添加用于PHP分析/debugging的xdebug。

也看看什么MySQL查询在挂起时运行,也许它是一个MySQL缓慢的查询/locking问题。

如您所说,也可能是一个networkingAPI问题。

而当你用尽所有的select,也许只是与老板交谈,并踢了用户。 根据服务器上有多less个其他站点,服务器运行状况可能比站点本身更重要。

正如我所提到的,我们怀疑其中一个插件是手头问题的原因。 此前,当他们的许可证服务器closures时,我们的网站也被closures了。 他们表示这个问题是在最近一次更新中修复的,但是由于我们的宕机时间太短,所以我怀疑这个问题。

我们最终以如下方式debugging它:

  • 我们做了一个普通的请求,看看页面是如何加载的。
  • 如果这个插件是问题的话,它可能会通过TCP端口80与许可证服务器进行联系。我们之前没有想到这一点,但是这对我们来说是个窍门:我们在IP表中阻塞了这个端口来模拟一个时间在许可证服务器上(确保在IP表中将127.0.0.1白名单,所以它不会得到一个永久性的块)
  • 我们再次做了一个strace,并加载了页面:这一次,它没有加载和卡住。 几秒钟后,我们closures了strace,查看了文件。

strace的最后一行是文件的加载:/wp-content/plugins/[plugin-name]/[file-of-plugin].php。 Apache无法通过这个插件,直到我们再次解锁端口80。

我们删除了插件,并没有经历过任何停机时间。 这是一个非常罕见的问题,但是我希望如果别人遇到同样的问题,我的答案会很有帮助。

感谢所有的评论和回答。 我们非常感谢,它真的帮助我们考虑解决scheme。