首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断哪个页面正在创建高CPU负载的httpd进程?

如何判断哪个页面正在创建高CPU负载的httpd进程?
EN

Server Fault用户
提问于 2010-05-25 00:52:23
回答 2查看 3.1K关注 0票数 5

我有一个LAMP服务器(基于CentOS的MediaTemple (DV)极限和2GBRAM)运行一个定制的Wordpress+bbPress组合。

服务器每天的浏览量约为30k,开始呻吟。今天早些时候,当大量车辆涌入时,它跌跌撞撞了大约5分钟。即使在正常情况下,我也可以看到虚拟服务器有时处于90%+ CPU负载状态。使用Top经常可以看到5-7个httpd进程,每个进程使用15-30% (有时甚至50%) CPU。

在我们进行大的优化传递之前(我们使用MySQL可能是罪魁祸首),我希望找到主要违法者的页面,并首先处理它们。有什么方法可以让我找出哪些特定的请求对最需要CPU的httpd进程负责呢?我发现了很多关于优化的信息,但是没有关于这个具体的问题。

第二,我知道有一百万个变量,但是如果你对我们是否应该在性能的边界上有任何洞察力,那么我想听听你的意见。我们应该考虑转移到更强大的服务器,还是应该专注于当前服务器的优化?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2010-05-25 01:10:49

strace是开始调试这类问题的好方法。尝试占用更多CPU的Apache进程之一的pid:

代码语言:javascript
复制
strace -f -t -o strace.output -p PID

这将显示在该过程中进行的系统调用。看看strace.output,看看这个过程是做什么的。这可能会启发您的方式,并告诉您的过程是挂在哪里。"-t“标志在这里非常重要,因为它将以一天中的时间作为strace输出的每一行的前缀。所以,寻找一个飞跃。

另一方面,正如您认为MySQL可能是罪魁祸首,我会启用缓慢的查询日志,查看它并尝试优化该查询。有关慢速查询日志这里的更多信息。

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

关于你的第二个问题,我认为很难用这个信息来判断。如果您有预算,将前端(webserver)与后端(数据库)分离总是一种很好的做法。另一方面,我认为在增加更多硬件之前,应该集中精力利用当前的硬件来优化性能。否则,问题可能只是被推迟了。

希望这能有所帮助。

票数 7
EN

Server Fault用户

发布于 2010-05-25 12:54:14

尝试使用磨床 -它将帮助您找到瓶颈。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/144912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档