该服务器运行 Ubuntu 12.04.5 LTS,用作 Web 服务器(apache 2.2.22)和 ftp 服务器(proftpd 1.3.4a)。当这种情况持续 5 分钟左右时,没有人可以访问网页。(这是一个虚拟专用服务器)
这是此时 top 命令的输出,
top - 09:06:58 up 16 days, 14:29, 1 user, load average: 36.01, 23.39, 10.79
Tasks: 161 total, 38 running, 123 sleeping, 0 stopped, 0 zombie
Cpu(s): 18.8%us, 56.2%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 25.0%si, 0.0%st
Mem: 8171872k total, 8043880k used, 127992k free, 164308k buffers
Swap: 2096124k total, 0k used, 2096124k free, 7007256k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5348 root 20 0 37536 7092 2104 R 43 0.1 0:43.40 archive.pl
5354 www-data 20 0 174m 6984 4804 R 42 0.1 0:14.65 cron_job_creati
35 root 20 0 0 0 0 R 41 0.0 11:40.57 kswapd0
26 root 20 0 0 0 0 S 39 0.0 1:17.96 sync_supers
5353 www-data 20 0 174m 6984 4804 R 38 0.1 0:13.32 cron_job_creati
5352 www-data 20 0 174m 7232 4940 R 31 0.1 0:10.36 cron_job_creati
5371 root 20 0 25108 308 0 R 24 0.0 0:00.87 master
5358 www-data 20 0 296m 7476 1060 R 21 0.1 0:03.24 apache2
948 root 20 0 25108 1604 1296 S 18 0.0 2:50.30 master
5365 root 20 0 102m 2332 832 R 17 0.0 0:01.10 proftpd
988 root 20 0 102m 2228 728 R 15 0.0 10:38.37 proftpd
5317 www-data 20 0 304m 17m 3344 R 15 0.2 0:28.07 apache2
5369 root 20 0 102m 1916 416 R 15 0.0 0:01.89 proftpd
5225 www-data 20 0 305m 18m 3408 R 11 0.2 0:31.17 apache2
5256 www-data 20 0 304m 17m 3344 R 9 0.2 0:29.83 apache2
5254 www-data 20 0 303m 17m 3336 R 8 0.2 0:27.67 apache2
5345 www-data 20 0 297m 8156 1720 R 6 0.1 0:04.92 apache2
5357 root 20 0 17336 1356 972 R 4 0.0 0:04.48 top
5368 www-data 20 0 296m 6976 624 R 3 0.1 0:00.98 apache2
5363 root 20 0 102m 2128 628 R 1 0.0 0:01.45 proftpd
1 root 20 0 24204 1760 912 S 0 0.0 1:31.62 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:53.40 ksoftirqd/0
5 root 20 0 0 0 0 S 0 0.0 0:00.49 kworker/u:0
6 root RT 0 0 0 0 S 0 0.0 0:00.62 migration/0
7 root RT 0 0 0 0 S 0 0.0 3:14.39 watchdog/0
8 root RT 0 0 0 0 S 0 0.0 2:49.77 migration/1
10 root 20 0 0 0 0 S 0 0.0 0:12.92 ksoftirqd/1
12 root RT 0 0 0 0 S 0 0.0 4:01.38 watchdog/1
13 root RT 0 0 0 0 S 0 0.0 0:34.39 migration/2
15 root 20 0 0 0 0 S 0 0.0 0:12.88 ksoftirqd/2
16 root RT 0 0 0 0 S 0 0.0 3:31.75 watchdog/2
17 root RT 0 0 0 0 S 0 0.0 1:10.81 migration/3
19 root 20 0 0 0 0 S 0 0.0 0:08.38 ksoftirqd/3
20 root RT 0 0 0 0 S 0 0.0 3:30.11 watchdog/3
21 root 0 -20 0 0 0 S 0 0.0 0:00.00 cpuset
22 root 0 -20 0 0 0 S 0 0.0 0:00.00 khelper
23 root 20 0 0 0 0 S 0 0.0 0:00.00 kdevtmpfs
24 root 0 -20 0 0 0 S 0 0.0 0:00.00 netns
25 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/u:1
27 root 20 0 0 0 0 S 0 0.0 0:00.08 bdi-default
28 root 0 -20 0 0 0 S 0 0.0 0:00.00 kintegrityd
29 root 0 -20 0 0 0 S 0 0.0 0:00.00 kblockd
30 root 0 -20 0 0 0 S 0 0.0 0:00.00 ata_sff
31 root 20 0 0 0 0 S 0 0.0 0:00.00 khubd
我注意到 kswapd0、sync_supers 只在此时运行。它们是什么?由于有足够的物理内存,因此不需要交换内存?archive.pl 和其他以 cron_ 开头的命令是我编写的脚本,每 10 分钟运行一次。它们经常访问硬盘,但从未导致服务器运行缓慢。大约 5 分钟后它就会恢复正常。提前致谢。
答案1
有一件事是肯定的,您的平均负载失控了 - load average: 36.01, 23.39, 10.79
。通过查看内核线程,虚拟机似乎有 4 个 vCPU,在对 CPU 进行标准化后,平均负载为 9、5.84、2.70,这确实很高。任何高于 1.0 的平均负载都应调查 I/O、内存或 CPU 过载情况。
在您的情况下,磁盘 I/O 似乎不是问题,0.0%wa
表明 CPU 没有浪费时间等待 I/O,并且似乎没有任何处于D
状态的进程。
内存 – 我没有看到任何交换,并且实际内存使用情况RES
看起来不错。
CPU——您有38 running
任务,并且在顶部输出中您可以看到状态中的许多进程R
都在争夺 CPU 周期。
我建议你去此 Linux Journal 链接解决高平均负载问题。例如,你可以先将 cron 作业移出上午 9:00 窗口。