如何find增加服务器负载的原因

我正在加载我的服务器的问题,即使我是一个有点经验的Linuxpipe理员,我现在没有想法。

问题是服务器上的负载缓慢而稳步增加,没有任何明显的原因。

该服务器是一个AMD Athlon(TM)64 X2双核处理器6000+与6GB内存。 它正在运行Debian稳定版Linux 2.6.26-2-amd64#1 SMP Wed Aug 19 22:33:18 UTC 2009 x86_64 GNU / Linux。

服务器基本上运行Lighttpd,几个FastCGI PHP进程和一个MySQL数据库。 典型的web服务器任务。

CPU从来没有完全用完,内存主要用于缓冲区和caching,这是很好的。 我试图重新启动各种服务,看看其中一个会再次减less负载,但没有运气。

这里是显示负载,CPU和IOStat的graphics:

所以,问题是:什么会导致一个缓慢但不断增加的负载? 我怎么知道什么是负责任的?

更新:我忘了提及,当我重新启动服务器,负载将下降到0.3至0.6左右,并将在接下来的几个星期缓慢爬上。

每个僵尸进程加载1.0。 你可能会看到僵尸的积累。

我发现了一个很好的暗示来回答一个不同的问题 。

在状态“D”中寻找进程显示了四个PHP进程似乎挂起相当长一段时间,对应于负载曲线中的“步骤”:

 #> ps aux | awk '$8 ~ /D/ { print $0 }' wiki 6651 0.0 0.0 0 0 ? D Oct04 0:41 [php-cgi] bugs 6731 0.0 0.0 0 0 ? D Oct27 0:14 [php-cgi] manpages 7536 0.0 0.0 0 0 ? D Oct30 0:21 [php5-cgi] wiki 23847 0.0 0.0 0 0 ? D Oct06 1:32 [php-cgi] 

所以这些似乎是问题。 我现在需要找出这些进程挂起,以及如何解决这个问题。 感谢大家。

我的猜测是服务器IO饿死了,也许你应该添加iotop统计图表

我想知道是否可以有每个应用程序io活动也是服务器负载的一个因素

http://rt.wiki.kernel.org/index.php/I/Otop_utility

其他工具是dstat

如果是I / O,那么他会在CPU图上看到iowait(粉红色)。

这种问题通常来自硬盘,不足以满足MySQL数据库和HTTP服务器所需要的数据。 你应该看看iostat命令

一般来说,高服务器负载实际上并不是一件坏事; 这意味着你没有闲着,做的事情比你想象的要less。 总容量的80%-90%(有些“爆炸”房间)是通常所追求的。 我build议检查mpstat和vmstat的输出。 特别是,vmstat的前两个数字可以给你更多关于运行队列中进程“备份”的更有意义的信息。 vmstat输出的最后一列(“wa”)可以告诉你是否等待I / O完成多久。 运行队列大小和I / O等待时间通常是相关的。 还可以查看sar(来自sysstat软件包):它可以让您详细了解一段时间内正在发生的事情; 它logging的指标非常全面。