如何查看哪些进程导致我的服务器变慢?

如何查看哪些进程导致我的服务器变慢?

我服务器上的所有网站都极其缓慢,甚至根本无法加载。甚至服务器管理员 (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

如果您无法远程进入,您可以通过控制台进入吗? top会有所帮助,将按 CPU 对进程进行排序,在顶部按 M 键将按最高内存使用率排序。

输出看起来像 在此处输入图片描述

答案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、内存和交换使用情况、负载等)。这可能会为您提供有关问题的更多信息。

相关内容