Skip to content

Linux设置swap空间

服务器上日常运行着静态博客+云笔记+jenkins的容器,jenkins用于gitee上托管的博客repo的ci/cd。当jenkins进行构建时,内存占用率会急剧升高,轻则容器宕机,重则服务器跟着一起boom。因此需要设置swap来缓解jenkins内存占用瞬时升高的状况。

查看磁盘分区

  • df -h

image-20220310010316020

Filesystem中/dev/vda1挂载点为/的就是我们的磁盘

一般来说swap大小设置规则:

4G以内RAM,Swap设置为2倍RAM

4G-8GRAM,Swap设置等于内存大小

8G-64G,Swap设置为8G

64G-256G,Swap设置为16G

创建Swap分区文件

我这个是腾讯云4c 4G 80G的机器,这里swap设置为4G:fallocate -l 4G /swap

启用Swap分区

修改权限使文件只能root访问:chmod 600 /swap

将文件标记为swap空间:mkswap /swap

启用swap文件:swapon /swap

验证交换是否可用:swapon --show

持久化swap挂载

备份fstab:cp /etc/fstab /etc/fstab.bak

添加一条记录: echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

调整Swap设置

  • swappiness

调整Swappiness参数,该参数主要配置系统将数据从RAM交换到交换空间的频率。该参数的值是介于0和100之间的百分比。范围在0到100之间。 低参数值会让内核尽量少用交换,更高参数值会使内核更多的去使用交换空间。

查看当前swappiness值:cat /proc/sys/vm/swappiness

临时修改,重启失效:sysctl vm.swappiness=10

永久设置:vim /etc/sysctl.conf,最后一行加上vm.swappiness=10,保存并退出。sysctl -p 立即生效

  • vfs_cache_pressure 表示强制Linux VM最低保留多少空闲内存(Kbytes)。当可用内存低于这个参数时,系统开始回收cache内存,以释放内存,直到可用内存大于这个值。 查看 cat /proc/sys/vm/vfs_cache_pressure 缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache。

vim /etc/sysctl.conf,最后一行加上vm.vfs_cache_pressure=50