我怎样才能知道哪个页面正在创建高CPU负载的httpd进程?


5

我有一台LAMP服务器(具有2GB RAM的基于CentOS的MediaTemple(DV)Extreme)运行自定义的Wordpress + bbPress组合。

每天大约有3万次浏览量,服务器开始is吟。当交通涌入时,它在今天早些时候跌跌撞撞了约5分钟。即使在正常条件下,我也可以看到虚拟服务器有时会承受90%以上的CPU负载。使用Top我经常可以看到5-7个httpd进程,每个进程使用15-30%(有时甚至50%)的CPU。

在进行大量优化之前(我们使用MySQL可能是罪魁祸首),我很想找到最主要的网页,然后对其进行处理。有没有一种方法可以找出哪些特定请求负责最耗CPU的httpd进程?总的来说,我发现了很多关于优化的信息,但是关于这个特定问题却一无所获。

其次,我知道有上百万个变量,但是如果您对使用单个具有该大小站点的专用虚拟服务器是否应该达到性能极限有任何了解,那么,我很想听听您的意见。我们应该考虑迁移到功能更强大的服务器,还是应该专注于当前服务器的优化?

Answers:


7

strace是开始调试此类问题的好方法。尝试跟踪消耗更多CPU的Apache进程之一的pid:

strace -f -t -o strace.output -p PID

这将向您显示在该过程中进行的系统调用。看一下strace.output,看看进程在做什么。这可能会启发您的方式,并向您显示流程的挂起位置。“ -t”标志在这里非常重要,因为它将在strace输出的每一行前面加上一天中的时间。因此,寻求飞跃。

另一方面,正如您认为MySQL可能是罪魁祸首,我将启用慢速查询日志,对其进行查看并尝试优化该查询。有关慢查询日志的更多信息,请参见此处

另外,不要忘记查看Web服务器的日志文件。

关于您的第二个问题,我认为仅凭此信息很难说清。如果您有预算,则将前端(Web服务器)与后端(数据库)分开始终是一个好习惯。另一方面,我认为在添加更多硬件之前,应该重点尝试使用当前硬件优化性能。否则,该问题可能只是被推迟了。

希望这可以帮助。


哇。strace的输出令人着迷。多么教育。实际上,我可以看到系统在根文件夹中首先查找“ require”的位置,因为我没有在路径中包含“ ./”。一些非常奇怪的输出。一些需要CPU的进程似乎是从我的站点开始的,然后切入“” / usr / lib / python24 ...”。我不在任何地方使用python。这可能是什么?
Greg

@Greg:如果您不使用python,那很奇怪。您是否注意到时间在飞跃?
Marco Ramos 2010年

不,没有时间飞跃。这是strace输出中发生过渡的部分的Pastiepastie.org/976727。顶部是我的网站,底部是python文件夹。
格雷格(Greg)2010年

在这一行:31758 19:16:44 epoll_wait(26,{{EPOLLIN,{u32 = [DELETED],u64 = [] DELETED}}},2,-1)= 1似乎该进程等待多个第二个带有文件描述符26的文件。这可能是问题的根源之一。希望这可以帮助。
Marco Ramos 2010年

0

尝试使用The Grinder-它会帮助您找到瓶颈。


谢谢彼得。乍一看,Grinder似乎专注于Java,但我将对其进行研究。
格雷格2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.