操作系统:Debian 6.0 RAM:3072 M,CPU:单核。
顶部:
top - 08:56:43 up 21 days, 12:37, 1 user, load average: 28.38, 22.48, 15.95
Tasks: 8 total, 1 running, 7 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.3%us, 14.7%sy, 0.0%ni, 17.5%id, 57.0%wa, 0.1%hi, 4.4%si, 0.0%st
Mem: 3145728k total, 28144k used, 3117584k free, 10236k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1247 root 20 0 18932 1240 1000 R 0 0.0 0:00.06 top
1 root 20 0 8356 724 676 S 0 0.0 7:41.97 init
3277 root 20 0 208m 11m 5652 S 0 0.4 0:00.17 apache2
3847 root 20 0 22420 1032 788 S 0 0.0 0:12.66 cron
8809 www-data 20 0 208m 7400 1168 S 0 0.2 0:00.00 apache2
26429 root 20 0 70488 3368 2652 S 0 0.1 0:00.80 sshd
26539 root 20 0 19300 2124 1564 S 0 0.1 0:00.16 bash
29551 root 20 0 49168 1152 604 S 0 0.0 0:00.12 sshd
辅助附言:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 8356 724 ? Ss Jul23 7:41 init [2]
root 3277 0.0 0.3 213808 11828 ? Ss 08:17 0:00 /usr/sbin/apache2 -k start
root 3847 0.0 0.0 22420 1032 ? Ss Jul23 0:12 /usr/sbin/cron
root 5870 0.0 0.0 16332 1140 pts/10 R+ 08:58 0:00 ps aux
www-data 8809 0.0 0.2 213944 7400 ? S 08:32 0:00 /usr/sbin/apache2 -k start
root 26429 0.0 0.1 70488 3368 ? Ss 08:13 0:00 sshd: root@pts/10
root 26539 0.0 0.0 19300 2124 pts/10 Ss 08:13 0:00 -bash
root 29551 0.0 0.0 49168 1152 ? Ss Jul23 0:00 /usr/sbin/sshd
我如何才能找出导致问题的进程?一段时间后,平均负载下降了,但有人能帮我找出这种现象的原因吗?
更新:平均负载 233
top - 10:29:01 up 21 days, 14:09, 2 users, load average: 237.96, 183.80, 98.76
Tasks: 15 total, 1 running, 14 sleeping, 0 stopped, 0 zombie
Cpu(s): 9.3%us, 14.2%sy, 0.0%ni, 0.0%id, 72.0%wa, 0.0%hi, 4.6%si, 0.0%st
Mem: 3145728k total, 51408k used, 3094320k free, 10272k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 8356 724 676 S 0 0.0 7:44.70 init
2031 root 20 0 70592 3388 2652 S 0 0.1 0:00.14 sshd
2664 root 20 0 19300 2120 1556 S 0 0.1 0:00.02 bash
3277 root 20 0 210m 11m 5680 S 0 0.4 0:00.57 apache2
3847 root 20 0 22420 1032 788 S 0 0.0 0:12.70 cron
4041 www-data 20 0 211m 7792 1228 S 0 0.2 0:00.00 apache2
13767 root 20 0 32800 1112 812 S 0 0.0 0:00.01 cron
14742 smmsp 20 0 52508 3940 2632 D 0 0.1 0:00.00 sendmail
15769 root 20 0 69232 3092 2408 S 0 0.1 0:00.01 sshd
16154 www-data 20 0 211m 7716 1228 S 0 0.2 0:00.00 apache2
17260 sshd 20 0 50616 1372 728 S 0 0.0 0:00.00 sshd
18436 root 20 0 18932 1248 1004 R 0 0.0 0:00.02 top
26429 root 20 0 70488 3376 2652 S 0 0.1 0:01.11 sshd
26539 root 20 0 19300 2124 1564 S 0 0.1 0:00.29 bash
29551 root 20 0 49168 1152 604 S 0 0.0 0:00.14 sshd
答案1
您的服务器在 I/O 等待上花费了过多的时间。
57.0%wa
这意味着...磁盘。
导致此问题的一个可能原因是运行 VPS 的服务器存在磁盘问题。这些问题包括但不限于:磁盘故障;使用非企业级磁盘;您的主机试图在创造性回收的硬件上运行 VPS 业务等。
也可能是您正在运行一个导致磁盘活动量异常高的进程。不幸的是,您的top
或ps
列表中没有报告该信息,这让我怀疑您有一个基于 OpenVZ 的低端 VPS。(如果属实,请回到上一段。)
至于解决问题,首先要做的是排除任何导致大量磁盘活动的进程。iotop
正如@Shi 提到的,这个程序对此很有用。不过我敢打赌你什么也找不到。完成后,你联系主机报告服务器磁盘的一些问题,他们必须诊断这些问题,因为他们是主机,你无法从容器内看到这些问题。
(之后,当您购买新的 VPS 提供商时,请避开使用 OpenVZ 的提供商。根据我的经验,绝大多数 VPS 提供商的运行情况都很糟糕。)
答案2
首先,尝试理解下面这一行:
Cpu(s): 6.3%us, 14.7%sy, 0.0%ni, 17.5%id, 57.0%wa, 0.1%hi, 4.4%si, 0.0%st
您会发现,用户空间应用程序的 CPU (%us) 几乎什么都不做。它忙于系统(内核)任务 (%sy),甚至忙于等待 (%wa)。
等待通常意味着 I/O(输入/输出)等待。因此,使用 检查输入/输出统计信息iotop
。
由于交换已被禁用,因此交换不会导致此问题。