文章大纲
去年从腾讯云切换到阿里云的 99/年 的轻量应用服务器,配置是 2C2G3M 将要在月底到期。
由于博客访问量寥寥无几,CPU 长时间处于空闲的状态,负载平均值也是接近于 0,所以想降低配置(省钱,挑战极限),目光瞄向了突发实例,然后发现了这个配置:
四舍五入,约等于不用钱。唯一的缺点就是只有 512MB 的内存,所以不敢直接下单,先下单了一个按量付费的实例。
512MB 的内存如果运行的是 Typecho + SQLite 的组合那是一点问题都没有,可惜当初看中的 Wordpress 的生态,也不想再转回去 Typecho了。所以在测试期间遇到的最大的挑战的就是内存不足带来的 Out Of Memeory 了,遇到的问题有以下几点。
操作系统的选择
开始在 ECS 上选择 Alibaba Cloud Linux (不要勾选加固,会引入一些 agent,让本身就少的资源更加岌岌可危),这是第一次使用,猜测是基于 CentOS8 或 RHEL8 的发行版本,本以为使用云提供商自身维护的发行版会有较好的效果,结果习惯性的拿到系统运行一个 dnf update
,就碰到了 OOM,dnf 被 kill 掉了。
那其实意味着基于 RHEL 的发行版就不用看了,索性测试使用最新的 Debian 12.5,使用 apt 安装软件时没有出现 OOM 的情况,并正常的安装了所需的软件包。
MariaDB 的配置
安装好软件包,恢复备份的配置文件和数据库后,博客就能正常访问了,但只要多几次查询的操作,例如登录后台操作时,就容易出现连接数据库失败的提示,不用多想,没错,MariaDB 也遇到了 OOM。
参考 Starting MySQL On Low Memory Virtual Machines 修改 performance_schema = off
的配置来有效降低内存的使用。
PHP 的配置
设置 php-fpm ,将 process manager
的类型直接设置为 static
,子进程数为 2
:
pm = static
pm.max_children = 2
最后看一下运行了 Nginx PHP-FPM MariaDB Memcached(对,我还使用了该服务,哈哈)组件的内存使用情况:
root@iZ8vb94xlhnztqy95il3rkZ:~# free -m
total used free shared buff/cache available
Mem: 418 339 14 49 125 78
Swap: 1023 0 1023
我还增加了一个 1G 大小的 Swap,然而没什么鸟用,好了,运行几天看看,没有问题就正常的续费了。
———————– 2024-05-23 更新 ———————–
已经续费到了 2029年5月25日 23:59:59 。