昨晚我收到很多来自 DirectAdmin 的消息,说:系统的平均负载是 46.86,或类似的数字。它附带一个“top”打印输出,但我从该打印输出中只能看出 CPU 的空闲率为 99.7%,并且使用的内存似乎很高。但读了一点之后,我明白这是正常的,只要交换内存较低(2G 中的 80M 是低的,对吧?),就没有问题。
所以我的问题是:高负载从何而来?我应该担心和/或采取任何措施吗?
这是一台 CentOS VPS,配备 512MB RAM 和 1 个核心。它目前仅托管 2 个网站,流量非常低。
今天早上(半天后)的免费命令:
free
total used free shared buffers cached
Mem: 503396 444488 58908 0 53688 165556
-/+ buffers/cache: 225244 278152
Swap: 2097144 81840 2015304
来自 directAdmin 的第一条消息,包括顶部打印输出:
This is an automated message notifying you that the 5 minute load average on your system is 46.86.
This has exceeded the 10 threshold.
One Minute - 51.18
Five Minutes - 46.86
Fifteen Minutes - 30.63
top - 00:16:43 up 92 days, 12:58, 1 user, load average: 51.18, 46.86, 30.63
Tasks: 196 total, 3 running, 193 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 503396k total, 458164k used, 45232k free, 36656k buffers
Swap: 2097144k total, 82432k used, 2014712k free, 141668k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12008 root 20 0 15068 1156 760 R 2.2 0.2 0:00.04 /usr/bin/top -c -b -n 1
12012 root 20 0 15068 1144 760 R 2.2 0.2 0:00.03 /usr/bin/top -c -b -n 1
12014 root 20 0 15076 1252 844 R 2.2 0.2 0:00.03 /usr/bin/top -c -b -n 1
11828 diradmin 20 0 53952 2644 2060 S 1.1 0.5 0:00.08 /usr/local/directadmin/dataskq
11881 diradmin 20 0 53952 2644 2060 S 1.1 0.5 0:00.04 /usr/local/directadmin/dataskq
1 root 20 0 19244 1136 916 S 0.0 0.2 0:00.91 /sbin/init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kthreadd]
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 [migration/0]
4 root 20 0 0 0 0 S 0.0 0.0 0:00.58 [ksoftirqd/0]
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 [watchdog/0]
6 root 20 0 0 0 0 S 0.0 0.0 0:01.91 [events/0]
7 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [cpuset]
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [khelper]
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [netns]
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [async/mgr]
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [pm]
12 root 20 0 0 0 0 S 0.0 0.0 0:00.01 [sync_supers]
13 root 20 0 0 0 0 S 0.0 0.0 0:00.01 [bdi-default]
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kintegrityd/0]
15 root 20 0 0 0 0 S 0.0 0.0 0:01.03 [kblockd/0]
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kacpid]
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kacpi_notify]
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kacpi_hotplug]
答案1
CPU 使用率并不是系统负载的唯一因素,另一个因素是处于不间断睡眠状态的进程(“D”)。尝试类似操作ps -axu |grep D
(这可能会产生误报,因为字母 D 可能出现在其他地方,而不仅仅是 STAT 列中)。如果有任何“D”进程正在累积,这至少会给您一个提示。一般来说,这些进程正在等待某些资源(例如磁盘上的文件),但这些资源没有立即响应。有时,这些进程可能会挂起很长时间(例如,在等待 NFS 挂载时,服务器已无法访问)。
编辑:您还可以尝试类似的方法ps axu | grep -E " D[<NLsl+]* "
来避免某些误报ps -axu |grep D
。
答案2
我一直认为 DirectAdmin(以及其同类)是一群坏人。
在 Google 上搜索“dataskq”的第一个结果是这
因此看起来是 DirectAdmin 导致了你的高负载。
如果我是你,我会把它移除,然后成为一个真实的系统管理员。