阿里云的2c2g服务器开一个java后端,一个nginx,一个mysql,一个redis,运行不到半天就挂彩了,原来是内存爆表了…试着创建个swap分区缓解一下,但是这个会降低服务器性能,所以不是在必要条件下还是不要使用,直接加预算买更好的服务器。
一键脚本
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 && \
sudo chmod 600 /swapfile && \
sudo mkswap /swapfile && \
sudo swapon /swapfile && \
sudo echo '/swapfile none swap sw 0 0' /etc/fstab && \
sudo echo 'vm.swappiness=10' /etc/sysctl.conf
创建步骤
Swap 分区的大小建议是物理内存的 1 到 2 倍。
创建分区
使用 dd
命令创建一个指定大小的交换文件。例如,要创建一个 2GB 的交换文件,可以使用以下命令:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
/swapfile
是交换文件的路径,bs=1M
表示每次写入 1MB,count=2048
表示总共写入 2048MB,即 2GB 的交换空间。
为了安全起见,应该将交换文件的权限设置为只有 root 用户可以访问:
sudo chmod 600 /swapfile
激活分区
使用 mkswap
命令将文件格式化为交换空间:
sudo mkswap /swapfile
使用 swapon
命令激活交换文件:
sudo swapon /swapfile
为了在系统启动时自动激活交换空间,您需要在 /etc/fstab
文件中添加以下行,直接执行下面的命令:
sudo echo '/swapfile none swap sw 0 0' /etc/fstab
设置优先级
swappiness
参数控制系统倾向于使用交换空间的程度。值范围从 0 到 100,默认值为 60。如果您希望系统更少地使用交换空间,可以尝试降低 swappiness
参数的值。使用以下命令可以临时调整 swappiness
参数:
sudo sysctl vm.swappiness=10
要永久设置 swappiness
参数,您需要在 /etc/sysctl.conf
文件中添加或修改以下行,直接执行下面的命令:
sudo echo 'vm.swappiness=10' /etc/sysctl.conf
使用文本编辑器打开 /etc/sysctl.conf
文件,添加上述行,然后保存并关闭文件。