我有一个奇怪的问题,我不知道如何进一步分析-有一个相当轻的网站运行在一个相当好的盒子(Xeon,4Gb内存,SATA)。从访问日志判断,每秒大约有120个请求。
负荷平均。在一个盒子里,几乎是随机的在5到20之间跳跃,但是很少会下降到10以下。CPU利用率在70%左右,并且是相当一致的。有很多apache进程,它们似乎都锁定了导致负载的某件事情。要跳到15以上,我不知道怎么找出他们锁定的是什么。
我可以使用什么来查看apache进程本身以及它阻塞的位置?
发布于 2010-06-30 17:34:33
限制其中一个正在运行的进程可以帮助您
netstat -n |grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more(可能需要调整45-取决于linux的版本)
或者也许:
tail -n 10000 access.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more你有什么繁忙的IP吗?
如果CPU是70%,这意味着它是计算负载而不是文件锁。我怀疑一个php脚本正在进行大量的计算以显示一个页面。如果您看到服务器的IP在任何一个列表中都很高,则可能是递归包含。或者,如果包含(‘http://localserver.com/file.php’);有时这会使加载更高,因为php必须通过套接字包含该文件。
你在接近MaxClients吗?apache错误日志中有什么吗?
发布于 2010-06-30 17:54:08
在顶部查看时,是否有任何apache进程占用了大量cpu?如果是这样的话,试着把他们中的一个勒紧,看看它在做什么。它会提供相当多的噪音,但是,您可能会看到一个模式。您可以使用strace -p processid来查看它,然后在末尾控制-d,并有一个名为typescript的文件,该文件也包含所有信息。
我怀疑您有一个php应用程序,它可能正在消耗大量的CPU,或者做大量的计算,甚至是一些简单的事情,比如遍历一个包含数万个文件的文件的目录。还可能有一个mod_rewrite正在执行许多重定向。基于cpu负载相当恒定这一事实,它可能是锁定文件的东西,但是,看起来更像是有递归的抓取,或者根据某人命中页面触发的东西。
发布于 2010-07-01 20:45:15
根据op的注释,您应该调整“保持活动超时”,在默认配置中,这些超时通常很高。
此外,如果每秒有那么多连接,并且保持存活超时时间很高,则会遇到文件描述符耗尽的风险,这可能会导致io等待。
https://serverfault.com/questions/156379
复制相似问题