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