![如何查看哪些进程导致我的服务器变慢?](https://linux22.com/image/557620/%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B%E5%93%AA%E4%BA%9B%E8%BF%9B%E7%A8%8B%E5%AF%BC%E8%87%B4%E6%88%91%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%98%E6%85%A2%EF%BC%9F.png)
我服务器上的所有网站都极其缓慢,甚至根本无法加载。甚至服务器管理员 (Plesk) 有时也无法加载。
过去几个月以来,这些网站没有任何变化。
我如何才能知道哪些进程导致我的服务器运行缓慢?
我的环境如下:
服务器:运行 Linux 2.8.x 的 VPS
操作系统:Centos 5
管理界面:Plesk 9.x
内存:1024MB
CPU:2.2GHz
我的网站运行在 PHP 和 MySQL 上。
我终于设法通过 telnet(Putty + SSH)进入我的服务器。运行后top
没有显示任何进程占用超过最大 2% 的 CPU,也没有进程占用过多内存。
我还让一个朋友安装了一个检查核心文件的程序,一切似乎都很好。
所以我倾向于认为是网络问题或其他服务器故障。但我无法找出问题所在。
以下是对 Sean Kimball 的一些回答:
- 我尚未在服务器上运行邮件服务
- 没有特定的带宽峰值。
Prefork 看起来像这样
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
- 不确定你说的 DNS 问题是什么意思。但我认为它已经启动并运行了。
- 没有失控的进程
在哪里可以找到平均负载?
Telnet 已被禁用,我必须使用 SSH 登录:)
答案1
您能否告诉我们更多关于您的环境的信息 - RAM、CPU、是否是虚拟机、Plesk 版本等。此外,是不是只有 Apache 速度慢,而邮件、ftp、dns 等都正常?
- 检查你的邮件队列 [qmqtool 非常适合此用途]
- 检查你的带宽和吞吐量,是否有峰值
- 如果这是虚拟机,您应该能够使用 virtuozzo 工具进行故障排除
您是否“调整”了您的 Apache 配置?特别是这部分:
<IfModule prefork.c>
StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 200 MaxClients 200 MaxRequestsPerChild 4000
</IfModule>
DNS,它正在运行吗?您的转发器会回答查询吗?
- ps -ax,有任何你无法识别的奇怪进程吗?
- 在任何给定时间您的平均负载是怎样的?
最后,与您的问题无关,请让 SSH 运行并关闭 telnet - 看在上帝的份上!
答案2
您可以看到您的平均负载正在运行uptime
。
由于您的服务器是 VPS,因此 CPU 能力可能不完全属于您,并且其他用户(使用与您的 VPS 相同的硬件)的操作可能会对您的服务器产生影响。我亲身经历过这种情况。
另一项检查的价值可能是iotop
。
答案3
答案4
Plesk 是否为您提供任何类型的性能/状态信息?
如果您仍然可以将文件上传到您的 Web 服务器,您可以尝试上传一个将执行 shell 命令并显示输出的文件。
例如,你可以尝试这个:
<?php
exec('TERM=xterm /usr/bin/top n 1 b i', $top, $error );
echo nl2br(implode("\n",$top));
if ($error){
exec('TERM=xterm /usr/bin/top n 1 b 2>&1', $error );
echo "Error: ";
exit($error[0]);
}
?>
由于这是以您的网络服务器用户身份运行的,因此您将看不到完整的进程列表,但可以看到一些系统信息(CPU、内存和交换使用情况、负载等)。这可能会为您提供有关问题的更多信息。