小内存VPS占用优化
这篇文章讲讲小内存VPS占用优化方法,适用于512M或以下的VPS,主要讲的是一些内核或者系统方面的优化方法。另,如果你在使用服务器面板,比如宝塔等,这篇文章还是别看了!
选择系统
首先是选择系统,目前俺认为广泛可用且最省内存的系统,还是Debian,因为Debian可以选择内存占用最小的Cloud内核,Cloud内核就是为KVM定制的,去除了云环境不需要的,像蓝牙、声音支持等无用模块。另外Cloud内核不适用于VMware虚拟化或桌面系统,下面就讲讲Debian10更换Cloud内核方法:
首先备份sources.list文件:cp /etc/apt/sources.list /etc/apt/sources.list.bak
修改sources.list文件:vi /etc/apt/sources.list
添加下面内容:deb http://deb.debian.org/debian buster-backports main
然后更新一下系统:apt update
搜索内核:apt search linux-image | grep cloud-amd64
或者 apt search linux-image | grep buster-backports
会输出类似下面内容:
1 | linux-image-4.19.0-14-cloud-amd64/stable 4.19.171-2 amd64 |
建议选择stable版本 linux-image-4.19.0-16-cloud-amd64
安装,注意带有cloud字样的image文件:
apt install linux-image-4.19.0-16-cloud-amd64
重启:/sbin/reboot
重启后即更换了新内核,另小内存VPS内核不必求新,稳定就好。
另,删除旧内核方法,请看下面这篇文章的“删除旧内核”部分,方法是一样的:
https://hostalk.net/posts/kernel_bbr.html
PS:旧内核删不删是无所谓的,留着可以方便以后随意切换。
增加或删除swap分区
既然内存太小,自然是要设置交换分区了,下面是增加或删除swap分区方法:
首先,检查分区: free -h
1 | total used free shared buff/cache available |
如果出现上面Swap字样说明你的VPS是存在swap分区的,这个时候想调整分区大小,俺们就要先删除原有分区,再创建。
找到swapfile文件: find / -name swapfile
cd到存放swapfile的文件夹
停用swap空间: swapoff swapfile
删除swapfile文件: rm swapfile
上面完事后就等于删除swap分区了,接下来创建swap分区。
cd / && mkdir swap && cd swap
创建swap文件,后面的1024是分区大小1g,自己可以根据需要调整。
dd if=/dev/zero of=swapfile bs=1M count=1024
将文件标记为交换空间:
mkswap swapfile
启用该交换文件:
swapon swapfile
另建议给swapfile文件权限为600,也就是root权限,以免出现安全隐患:
chmod 600 swapfile
再次检查一下swap分区是否可用:
swapon --show
最后,设置swap分区为开机自动挂载:
echo "/swap/swapfile none swap sw 0 0" >> /etc/fstab
建议swap分区大小和RAM大小保持差不多即可。
设置 sysctl.conf vm选项
vi /etc/sysctl.conf
添加下面内容:
1 | #当内存使用率不足10%(默认值60%)时使用 swap,尽量避免使用 swap,减少唤醒软中断进程 |
保存后:sysctl -p
撤销安全补丁和内核模块加载
撤销安全补丁,比如 Intel CPU 的一些安全漏洞,提升CPU性能,降低内存占用,方法如下:
vi /etc/default/grub
注意是修改 GRUB_CMDLINE_LINUX_DEFAULT=
后面部分内容。
内核5.2或以上修改下面内容:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mitigations=off"
内核5.2以下修改成下面内容:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off tsx=on tsx_async_abort=off mitigations=off"
最后:update-grub
去掉一些没必要内核模块加载 (xfs 等),方法如下:
chmod -x /etc/grub.d/30_os-prober
上面主要讲的是一些内核或者系统方面的优化方法,至于第三方软件,比如Nginx、PHP、数据库等优化就不多讲了。
下面是俺512M内存的VPS搭建此博客后的占用情况: