终于放弃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