当我top
在centos7上运行时,发现kswapd0
吃了99%的CPU,如上图所示。
以下是一些其他信息
top - 11:38:04 up 32 days, 16:14, 1 user, load average: 0.06, 0.13, 0.19
Tasks: 142 total, 2 running, 140 sleeping, 0 stopped, 0 zombie
%Cpu(s): 12.0 us, 2.0 sy, 0.0 ni, 79.0 id, 6.7 wa, 0.0 hi, 0.0 si, 0.3 st
KiB Mem : 3618860 total, 199684 free, 1130200 used, 2288976 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2152124 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12493 mysql 20 0 1200596 402140 6868 S 5.3 11.1 46:54.22 mysqld
13460 apache 20 0 1089628 43932 22264 S 3.0 1.2 1:16.40 php-fpm
13462 apache 20 0 1088772 42704 21672 S 1.3 1.2 1:14.47 php-fpm
9391 root 20 0 124508 11588 4852 S 0.7 0.3 8:38.31 AliYunDun
13474 apache 20 0 1073892 40976 19884 S 0.7 1.1 1:15.93 php-fpm
12609 apache 20 0 1088832 44976 24000 S 0.3 1.2 1:15.94 php-fpm
12615 apache 20 0 1077948 42776 21764 S 0.3 1.2 1:16.34 php-fpm
12616 apache 20 0 1077568 43116 22344 S 0.3 1.2 1:14.59 php-fpm
12619 apache 20 0 1085672 44144 22380 S 0.3 1.2 1:14.62 php-fpm
12663 nginx 20 0 66928 7604 2276 S 0.3 0.2 4:55.48 nginx
12664 nginx 20 0 68064 9124 2708 S 0.3 0.3 5:17.61 nginx
13451 apache 20 0 1077360 41092 20452 S 0.3 1.1 1:15.16 php-fpm
20987 root 20 0 143572 5788 4492 S 0.3 0.2 0:00.75 sshd
27671 root 20 0 157676 2208 1544 R 0.3 0.1 0:00.12 top
28370 apache 20 0 1071564 34900 15676 S 0.3 1.0 1:01.53 php-fpm
1 root 20 0 191276 5412 1464 S 0.0 0.1 2:03.59 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.06 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:46.51 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/5
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/6
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/7
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/8
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/9
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/10
20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/11
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/12
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/13
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/14
我不知道为什么
[root@fl basic]#free -lh
total used free shared buff/cache available
Mem: 3.5G 1.1G 197M 87M 2.2G 2.1G
Low: 3.5G 3.3G 197M
High: 0B 0B 0B
Swap: 0B 0B 0B
答案1
好吧,root 不会占用你的 CPU,它会占用你的 CPU kswapd
。已知错误在 Linux 内核中。我们在 CentOS 7.1 中遇到了同样的问题,升级到 7.2 后问题就解决了。也许内核更新可以解决您的问题。
答案2
正如 AlexanderT 所说,这可能是一个内核错误,因此您应该更新内核。
如果您不能这样做,一个可能的解决方法是通过发出以下命令定期删除缓冲区/页面缓存:echo 3 > /proc/sys/vm/drop_caches
答案3
虽然在这种情况下它看起来像上面提到的内核错误,但在其他情况下它可能是其他东西。
可能是恶意软件。进程名称已更改为显示 kswapd0。这是恶意软件常用的伎俩,kswapd0 是我特别见过的一个。
还有一些线索表明这不仅仅是一个良性的内核进程:
- 内核进程的名称周围没有 [括号]
- 内核进程通常具有较低的 PID;在具有 64 个内核的服务器上,kswapd 大约有 500 个(内核越多意味着 kprocs 越多,例如迁移、看门狗、ksoftirqd,它们在 kswapd 之前运行)
- /proc/$PID/fd 中的文件 - 真正的 kproc 将没有任何文件描述符。
- 对于内核进程,VIRT/RES/SHR 将为 0,但此处的伪进程将具有非零值。
- 查找其他可疑进程。您是否看到 uptime、ls -la、id、whoami 等通常在几分之一秒内返回的内容?在您运行 ps 时,它们是如何全部运行的?您可能有恶意软件。
您仍然可能有一个真正的交换负载。如果您的系统可用内存不足,或者您的交换处于活动状态(如果有),那么这可能是由于正常的 VM 子系统操作造成的。