终于放弃CentOS转投Debian的怀抱,但在测试MediaWiki站点时竟然发现内存被榨干了。要知道我可是刚刚从2g内存升级到4g的,之前都没爆内存,现在倒好。
内存榨干还有一个问题,就是CPU会随之一起飙升。查进程发现,kswapd0的CPU占用率极高,而这个进程的作用就是管理虚拟内存的。当物理内存耗尽的时候,就会把一部分内存资料存储在硬盘的虚拟内存中。
然后我才意识应该设置一下swap空间,用free -h命令一查,直接为零。
首先要为系统创建一个新的交换文件,一般来说可以按照如下规则设置swap大小:

  • 4G以内的物理内存,SWAP设置为内存的2倍,不超过4G
  • 4-8G的物理内存,SWAP等于内存大小
  • 8-64G的物理内存,SWAP设置为8G
  • 64-256G物理内存,SWAP设置为16G

用fallocate命令创建一个新的交换文件。这里以4GB为例:

sudo fallocate -l 4G /swapfile

如果fallocate不可用,可换成dd命令:

sudo dd if=/dev/zero of=/swapfile bs=1G count=4

为了安全起见,需要设置正确的权限,使得只有root用户能够访问这个文件:

sudo chmod 600 /swapfile

接下来,将新创建的文件格式化为交换空间:

sudo mkswap /swapfile

启用刚才创建的交换文件:

sudo swapon /swapfile

检查swap是否已成功添加:

swapon --show

或者

free -h

要确保在每次启动时都能自动挂载这个交换文件,需要将其添加到/etc/fstab文件中。打开该文件:

sudo vi /etc/fstab

在文件末尾添加以下行:

/swapfile none swap sw 0 0

保存并退出编辑器。

现在已经成功地在Debian 12上增加了swap空间。
如果需要调整swap的大小,你可以先关闭所有swap:

swapoff -a

然后删除现有的交换文件

rm -rf /swapfile

之后重复上述的添加步骤,指定所需的新大小。记得通过以下命令来验证一下是否修改成功:

swapon --show

或者

free -h

正常情况,此时应该能够看到新的swap空间显示在输出中,那么说明已经修改成功了。

参考资料:
https://blog.naibabiji.com/news/debian-12-swap.html
https://itoau.com/?p=38
https://blog.csdn.net/u014644574/article/details/118671809

最后修改:2025 年 01 月 02 日
如果觉得我的文章对你有用,请随意赞赏