前言

一直在忙,之前一直怀疑机器中马,kswapd0这个进程4核心CPU24小时跑满单核心,简单排查无果,看了

简单处理

Linux 安装杀毒软件 ClamAV
前两天有小伙伴找到杜老师询问是否可以帮忙查杀服务器的木马病毒,原因是凉心云的安全中心提示有病毒,但自动查杀功能要付费,而且费用较高。正好杜老师最近在研究 Linux 平台的杀毒软件,分享一下 ClamAV 的使用方法。

这篇文章,安装排查后无果,记得在哪看过kswapd0挖矿病毒;度娘了一下

彻底删除挖矿病毒kswapd0
来源于知乎

各种尝试无果后,因为忙,再加上也没发现破坏数据和对外发包,屏蔽了大量出口IP后也就丢下没管了;

排查并解决

直到今天,终于闲下来,使用top命令查看,依旧单个核心100%跑满,真忍不了了,查了下网卡连接ip

1
netstat -antlp

并未发现异常IP,后继续通过ls -l命令查看kswapd0进程是否有软连接
到这里其实就已经很奇怪了,并没有发现软连接;

好!继续查!!!

查看swappiness参数

1
cat /proc/sys/vm/swappiness

好嘛,到这里终于是大概猜到什么原因了,那继续!

1
2
vim /proc/sys/vm/swappiness
# 修改vm.swappiness 值 越小使用swap越小尽量会使用物理内存默认值60根据需求修改即可
1
2
3
# 重新启用所有已定义的交换空间
# 也可以说是清理swap
centos swapoff -a && swapon -a

到这里再次查看top命令,发现杀不掉的kswapd0进程没了,CPU占用也下去了;
image

说下为什么吧

可能看到这里,有些朋友会云里雾里的(Tip:相信我,我不是故意忘记截图的)

缓存机制介绍

Linux 中的缓存机制是指操作系统使用物理内存的一部分来存储最近访问的数据的一种机制。这些数据通常是从文件系统读取的文件块、执行的程序、网络数据等。Linux 的缓存机制有助于提高系统性能,因为它可以减少对慢速存储设备(如硬盘)的访问次数。

Linux 的缓存机制包括以下几个方面:

页缓存(Page Cache​:

页缓存是内核用来缓存文件系统中的数据块的主要机制。当应用程序读取文件时,内核会将文件的数据块缓存到内存中,以便下次访问同一数据时可以更快地获取。如果内存不足,内核会根据一定的置换策略(如LRU)来释放缓存中的页。

目录项缓存(Dentry Cache​:

目录项缓存用于缓存文件系统中目录项的信息,包括文件名、文件属性等。这样可以加速文件系统的路径查找和文件访问操作。

Inode 缓存​:

Inode 缓存用于缓存文件系统中 Inode 结构的信息,包括文件的元数据(如文件大小、权限、所有者等)。这样可以加速文件系统的访问操作,减少对硬盘的访问次数。

Swap 缓存​:

Swap 缓存是指将内存中不常用的数据移动到交换空间(硬盘)中的一种机制。虽然不严格属于缓存,但它是 Linux 系统用来扩展虚拟内存的一种方式。

结言

Linux 的缓存机制是通过在内核中实现的,它们都可以自动管理,并且在系统运行时根据需要动态调整。这些缓存机制的存在可以显著提高系统的性能和响应速度,特别是在频繁读取相同数据的情况下。

当物理内存不足时,内核会试图释放缓存区(buffers/cache)里长时间不用的程序,并将其放入 Swap 空间中。然而,如果系统的 swappiness 值被设置为 0,即系统倾向于不使用 Swap,但又没有足够的可用内存,这会导致 kswapd0 进程陷入死循环状态。

swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60