我有一个LAMP服务器(基于CentOS的MediaTemple (DV)极限和2GBRAM)运行一个定制的Wordpress+bbPress组合。
服务器每天的浏览量约为30k,开始呻吟。今天早些时候,当大量车辆涌入时,它跌跌撞撞了大约5分钟。即使在正常情况下,我也可以看到虚拟服务器有时处于90%+ CPU负载状态。使用Top经常可以看到5-7个httpd进程,每个进程使用15-30% (有时甚至50%) CPU。
在我们进行大的优化传递之前(我们使用MySQL可能是罪魁祸首),我希望找到主要违法者的页面,并首先处理它们。有什么方法可以让我找出哪些特定的请求对最需要CPU的httpd进程负责呢?我发现了很多关于优化的信息,但是没有关于这个具体的问题。
第二,我知道有一百万个变量,但是如果你对我们是否应该在性能的边界上有任何洞察力,那么我想听听你的意见。我们应该考虑转移到更强大的服务器,还是应该专注于当前服务器的优化?
发布于 2010-05-25 01:10:49
strace是开始调试这类问题的好方法。尝试占用更多CPU的Apache进程之一的pid:
strace -f -t -o strace.output -p PID这将显示在该过程中进行的系统调用。看看strace.output,看看这个过程是做什么的。这可能会启发您的方式,并告诉您的过程是挂在哪里。"-t“标志在这里非常重要,因为它将以一天中的时间作为strace输出的每一行的前缀。所以,寻找一个飞跃。
另一方面,正如您认为MySQL可能是罪魁祸首,我会启用缓慢的查询日志,查看它并尝试优化该查询。有关慢速查询日志这里的更多信息。
另外,不要忘记查看don服务器的日志文件。
关于你的第二个问题,我认为很难用这个信息来判断。如果您有预算,将前端(webserver)与后端(数据库)分离总是一种很好的做法。另一方面,我认为在增加更多硬件之前,应该集中精力利用当前的硬件来优化性能。否则,问题可能只是被推迟了。
希望这能有所帮助。
发布于 2010-05-25 12:54:14
尝试使用磨床 -它将帮助您找到瓶颈。
https://serverfault.com/questions/144912
复制相似问题