在服务器中通过free -h可以看到有一个叫做swap的东西,这是服务器用硬盘制作的交换空间。在服务器内存不够时,将会使用这部分空间,但是如果swap空间不足很容易导致被使用的swap占swap总量变大,将会导致系统速度变慢。
步骤一:检查系统中的swap
sudo swapon --show
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 16G 111.8M -2
我们也可以使用free查看总的Swap大小
free -h
total used free shared buff/cache available
Mem: 125G 1.4G 10G 13M 113G 123G
Swap: 8G 129M 8G
步骤二:创建交换交换文件
sudo fallocate -l 125G /swap2.img
我们需要调整该文件的权限,否则如果其他人修改文件,将会造成隐患
ls -lh /swap2.img
-rw-r--r-- 1 root root 125G Mar 17 16:09 /swap2.img
sudo chmod 600 /swapfile
ls -lh /swap2.img
-rw------- 1 root root 125G Mar 17 16:09 /swap2.img
步骤三:启用交换文件
现在,我们可以通过输入下面的内容将文件标记为交换空间:
sudo mkswap /swap2.img
这将输出
Setting up swapspace version 1, size = 125 GiB (134217723904 bytes)
no label, UUID=786bd22c-2e4b-44fe-a5fc-c3a3267fe262
标记文件后,我们可以启用交换文件
sudo swapon /swap2.img
我们重新查看swap,可以看到我们新增的交换空间
sudo swapon --show
sudo swapon --show
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 16G 111.8M -2
/swap2.img file 125G 0B -3
步骤五:使交换文件永久生效
上面我们设置了交换空间,但是重启服务器后,交换空间将不会自动神效,我们需要在服务器挂载阶段把交换问价挂载到交换空间
sudo cp /etc/fstab /etc/fstab.bak
echo '/swap2.img none swap sw 0 0' | sudo tee -a /etc/fstab
步骤六:调整swappiness
该参数配置系统将数据从 RAM 交换到交换空间的频率。这是一个介于 0 和 100 之间的值,当值为100,内存为0也会使用交换空间,当值为0时,内存满了也不会使用交换空间,这里我们设置一个合理的值
sudo sysctl vm.swappiness=10
上面的设置重启后会失效,如果要长期生效,请修改下面的文件
sudo vim /etc/sysctl.conf
在文件最后,加上
vm.swappiness=10
步骤七:调整vfs_cache_pressure
vfs_cache_pressure的值再0-100之间,这个值控制内核在进行缓存时对 inode 和 dentry 信息进行缓存的优先级。为100时,统从缓存中删除索引节点信息的速度过快,会导致系统变慢
cat /proc/sys/vm/vfs_cache_pressure
修改下面的文件,新增一行,重启后将会生效
sudo nano /etc/sysctl.conf
vm.vfs_cache_pressure=50