我的服务器遇到了加载问题,尽管我是一个有经验的 Linux 管理员,但我现在却没有主意了。
问题是服务器负载缓慢但稳定地增加,而没有任何明显原因。
该服务器是 AMD Athlon(tm) 64 X2 双核处理器 6000+,配备 6GB RAM。它运行 Debian Stable 和 Linux gir 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 从未真正完全用完,内存主要用于缓冲区和缓存,这很好。我尝试重新启动各种服务,看看其中是否有一个可以再次降低负载,但没有成功。
以下是显示负载、CPU 和 IOStat 的图表:
那么,问题是:什么原因导致负载缓慢但不断增加?我如何找出原因?
更新:我忘了提一下,当我重新启动服务器时,负载将降至大约 0.3 到 0.6,并将在接下来的几周内开始再次缓慢上升。
答案1
每个僵尸进程都会使负载增加 1.0。您可能会看到僵尸进程的累积。
答案2
我找到了一个很好的提示来回答另一个问题问题。
查找状态为“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]
所以这些似乎是问题所在。我现在需要找出这些进程挂起的原因以及如何修复它。谢谢大家。
答案3
我猜服务器的 IO 不足,也许你应该将 iotop 统计数据添加到图表中
我想知道您是否可以有一个每个应用程序的 io 活动,这也是服务器负载的一个因素
http://rt.wiki.kernel.org/index.php/I/Otop_utility
其他工具是 dstat
答案4
此类问题通常来自硬盘速度不够快,无法为 MySQL 数据库和 HTTP 服务器提供所需的数据。您应该查看 iostat 命令