这不是典型的问题,但我已经没有思路了,也不知道去哪里寻求帮助。如果有更好的地方可以提问,请在评论中指出。谢谢。
情况
我们有一个使用Zend Framework的Web应用程序,因此在Apache Web服务器上以PHP运行。我们使用MySQL进行数据存储,并使用memcached进行对象缓存。
该应用程序具有非常独特的使用和负载模式。它是一个移动Web应用程序,在每个整点时刻,cronjob会浏览数据库,查找那些有一些等待信息或操作要执行的用户,并将这些信息发送到(外部)通知服务器,然后将这些通知推送给他们。用户收到这些通知后,就会打开应用程序并使用它,大多数时间都很短。一个小时后,同样的事情再次发生。
问题
在过去的几周中,该应用程序的使用率真的开始增长。在过去的几天中,我们遇到了非常高的负载和应用程序响应时间在发送这些通知期间和之后(所以基本上每个小时)翻倍。服务器不会崩溃或停止响应请求,它只会变得越来越慢,并且通常需要20分钟才能恢复 - 直到下一个整点再次开始。
我们已经有了广泛的监控(New Relic、collectd),但我无法找出问题所在;我找不到瓶颈。这就是你要介入的地方:
您能帮助我找出问题所在,也许还可以提供解决方法吗?
附加信息
服务器是一台16核Intel Xeon(8个核心带超线程,我想)和12GB RAM,运行Ubuntu 10.04(Linux 3.2.4-20120307 x86_64)。Apache是2.2.x,PHP是版本5.3.2-1ubuntu4.11。
如果任何配置信息可以帮助分析问题,请在评论中提出,我会添加它们。
图表
信息
collectd
New Relic
(抱歉,这些图是 gif 格式的,并且时间段不同,但我认为最重要的信息都在里面了)