CPU使用率达到100%,伴随着kswapd0进程运行,尽管并不需要进行交换操作。

我有一台小型虚拟服务器(1GB RAM,1 vcore),一直以来都表现良好,直到它突然因为kswapd0而报告100%的CPU使用率。 内存消耗在50%和60%之间。 我将swappiness设置为0,只是为了检查是否释放了CPU资源,但并没有。 我在16.04上遇到过这个问题,现在在升级后的18.04上仍然存在。 如何摆脱这个占用CPU的kswapd0呢?

确认我服务器上也有这个问题(Ubuntu 18.04)。至少恶意软件没有以root身份运行,而是其他用户。在这台服务器上,我安装了Samba;大多数用户使用的是Windows机器。被感染的用户(在Linux上)是那个最不懂电脑的人的账户。禁用该用户并重新启动后,问题停止了。编辑: 我观察到我的服务器上出现了与这篇文章描述的类似情况: https://laptrinhx.com/handling-mining-zombie-network-dota3-trojan-attacks-under-centos7-1117708974/ - Daniel Dutra
如果您的服务器被黑客用于比特币挖矿,请查看以下链接获取更多信息:https://www.reddit.com/r/valheim/comments/zltnqb/dedicated_server_hacked_for_bitcoin_mining/ - Cesar Morillas
4个回答

如果有人遇到相同的问题 - 原因是恶意软件:Multios.Coinminer.Minerkswapd0 是一个位于 /root/.configrc/a/kswapd0 的二进制文件。 你需要做的是:
  1. 清除与 /root/.configrc 相关的 crontab 任务
  2. 清除 ssh 密钥
  3. 删除 /root/.configrc

2恶意软件链接是有害的,请不要分享恶意软件样本。 - Thomas Ward
1被这个击中了。谢谢信息。 - Dave
1当命令行显示"./kswapd"时,我就知道有些不对劲了。谢谢 :) - Shadow
在我的情况下,当运行 top 命令时,用户是 installer+ - Ben Arent

这对于20.04也是相关的。我从一个Steam用户那里捕获到了为KillingFloor2 Dedicated服务器添加内容的信息。下面是它的样子。
crontab -e 的结果:

crontab -e

htop的结果:

htop

如何解决这个问题:
1. 我在cronjob中注释了几行代码。 2. 重启了服务器(CPU恢复正常)。 3. 删除了.configrc文件夹。 4. 再次检查了cron的路径并进行了清理。

这并没有真正回答问题。如果你有不同的问题,可以点击提问来提出。如果你想在此问题获得新的回答时收到通知,你可以关注此问题。一旦你拥有足够的声望,你也可以添加悬赏来吸引更多注意力至此问题。- 来自评论 - Pilot6

作为访客运行的恶意软件

如果您曾经启用过Ubuntu的访客账户,并且后来启用了SSH,那么可能会有恶意软件在使用您的访客账户运行。

sudo find /home -f kswapd0

它可以在任何用户的主目录中找到,例如/home/guest/.configrc/

加入任何存在受损机器的网络(会议、咖啡馆、城市),或者如果您使用像ngrok这样的服务,同时在您的系统上开放SSH,都会使您的计算机暴露于这种简单的访客漏洞。

因为权限从未提升(访客无法在/home/guest之外写文件,也无法使用sudo而无需密码),所以我能够删除访客帐户,一切正常运行。


在我的情况下,它是作为开发者运行的恶意软件。 - fanbondi

我将swappiness从60改为0,但没有起作用。根据Paul的回答,我发现对于那些占用大量CPU资源的kswapd0任务,VIRT/RES/SHR是非零的,这表明存在恶意软件。
最近有关类似问题的更新也显示了隐藏为kswapd0的恶意软件的存在。
1. kswapd0正在占用大量CPU资源 2. 在Ubuntu中,kswapd0导致系统变慢 3. 以下是我解决这个问题的方法。(请谨慎使用sudo、killall和rm -rf命令) 找到假的 kswapd0 所在位置。
$ sudo find /home -name kswapd0
/home/user/.configrc5/a/kswapd0

由于新服务器上的账户很少,我仔细检查了没有人在使用这个账户,并且.configrc5文件夹相对较新(大约一周前创建)。
$ sudo ls /home/user -al
total 224
drwxr-xr-x 18 user user   4096  四  10 23:56 .
drwxr-xr-x  8 root root   4096  四  10 20:44 ..
-rw-r--r--  1 user user    220  一  13 09:10 .bash_logout
-rw-r--r--  1 user user   3771  一  13 09:10 .bashrc
drwxrwxr-x 14 user user   4096  二  10 17:40 .cache
drwx------ 12 user user   4096  二  24 15:09 .config
drwxrwxr-x  4 user user   4096  四   4 00:48 .configrc5
...
-rw-r--r--  1 root root 131953  二  26 23:34 plm
-rw-r--r--  1 root root   6300  二  26 23:34 plm2
-rw-r--r--  1 user user    807  一  13 09:10 .profile
drwxr-xr-x  2 user user   4096  一  13 09:34 Public
drwx------  3 user user   4096  二  10 16:09 snap
drwx------  2 user user   4096  四  10 23:56 .ssh
-rw-r--r--  1 user user      0  一  13 09:51 .sudo_as_admin_successful
drwxr-xr-x  2 user user   4096  一  13 09:34 Templates
drwxr-xr-x  2 user user   4096  一  13 09:34 Videos

3. 我本以为我可以一劳永逸地删除用户账户,并检查它是否具有sudo特权,但是"sudo userdel user"被拒绝了。
4. 杀掉所有由用户运行的进程。
$ sudo killall -u user

删除.configrc5下的所有文件。
$ sudo rm -rf /home/user/.configrc5

再次检查 htop,没有任何奇怪的 CPU 活动了。

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community
已经有一个给出、被接受并证明有效的答案了。它并不复杂。你的回答没有帮助,而且比必要的复杂得多。 - David
我已经注意到了第一批回答。然而,它们对我来说并没有解决问题。Bozeman的回答帮助我找到了假kswapd0的位置,但是命令“-f”没有起作用。Vaflan和“m m”提到了crontab,但是我在我的crontab中没有找到任何东西。我不确定清除ssh密钥是否会影响任何东西,但是这个kswapd0今天又出现了。除此之外,我很好奇什么更复杂,什么对你没有帮助,这样我就可以改进。 - Chien Kai Ma
我在文件$/var/spool/cron/crontabs/user$中通过silversearcher-ag找到了'.configrc5',这似乎是crontab用户的基本知识。命令$crontab -u user -r$可以删除该文件。 - Chien Kai Ma
根据https://blog.csdn.net/tianli0929/article/details/115108987,还有一些文件需要清理。 对我来说,dota3.tar.gz位于/tmp/.X2kzz下,我还必须删除/home/user/.ssh/authorized_keys。 - Chien Kai Ma