我原本想用一台1G内存的Debian小鸡跑Docker,是不是很大胆?1G内存,跑Docker。不过跟大导演一镜到底不同,我还没有放弃TAT。所以才有了现在这篇文章。

第一步.安装Cloud内核并删除原内核

Cloud内核比起一般的完整内核占用要低个30-50M,对于寸土必争的1G内存小鸡来说,这很重要。

apt update
apt install linux-image-cloud-amd64

安装完成后建议先reboot确认启动没问题后再uname -r看看是否用上了Cloud内核。如果都没问题就可以删除不要的内核了,一个完整内核要占几百兆的空间(都可以放不知道多少日志了)。

// 查看内核列表
dpkg --get-selections | grep linux-image

// 删除内核
apt remove $内核名称

第二步.开启BBR

对于物理位置不在国内的机器来说,bbr对于使用体验提升相当大。bbr可以在轻微丢包的情况下做到几乎无感的使用体验这个是很牛逼的。

Debian10之后的系统都能直接开bbr了(什么年代了,还有人用比4.19还旧的内核?)。

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

或者直接编辑sysctl.conf也行。

// 使配置文件保存生效
sysctl -p

// 验证是否开启成功 如果结果都有 bbr,则证明已经成功开启了bbr。
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

第三步.修改SWAP调度

尽量避免使用swap,因为会唤醒软中断进程导致小鸡变慢。

通过修改 swappiness 的数值来更改 Linux 系统中 swap 的使用时机。swappiness 是一个介于 0 到 100 之间的整数,它表示系统在使用物理内存和 swap 空间之间的平衡。当 swappiness 等于 0 时,系统会尽量使用物理内存,只有当物理内存不足时才会使用 swap 空间。当 swappiness 等于 100 时,系统会积极地使用 swap 分区,并且把内存上的数据及时地搬运到 swap 空间里面。

// 查看默认的swappiness值
cat /proc/sys/vm/swappiness

我这里修改成20,这里改成自己想要的就好。

echo "vm.swappiness=20" >> /etc/sysctl.conf

或者直接编辑sysctl.conf也行。

之后重启主机即可生效。