之前老说我那台 1 核 1.9G 的小鸡在跑博客,但仔细一想,上面跑的东西远不止一个 nginx + Hugo。今天闲着没事,翻了一遍 systemctl 和 ps aux,把运行中的服务列了一遍,结果自己都吓了一跳——这配置能稳住这么多东西也是奇迹。
先列清单
直接上干货,这是目前在跑的服务:
| 服务 | 内存 | 干啥的 |
|---|---|---|
| nginx | ~50M | 网站服务器,博客全靠它 |
| hugo(构建时) | ~200M | 构建静态页面,平时不驻留 |
| goatcounter | ~28M | 自建网站统计,替代 Google Analytics |
| fail2ban | ~40M | 防爆破扫描的,每天拦几百个傻逼 |
| sing-box | ~16M | 你懂的,科学上网 |
| hermes gateway | ~184M | 这个博客的 AI 助手后端 |
| fwupd | ~228M | 固件更新守护进程(最离谱的一个) |
| sshd | ~8M | 远程连接用 |
| cron | ~6M | 定时任务调度 |
| systemd-journald | ~10M | 日志收集 |
| rsyslog | ~5M | 传统日志 |
| qemu-guest-agent | ~9M | VPS 宿主机通信用的 |
加起来常驻内存大概 600-700M 左右,峰值能飙到 900M。在剩 1G 的内存里反复横跳,swap 挂着保命。
最让我无语的:fwupd
看上面那表,最离谱的其实是 fwupd,一个固件更新守护进程,占了我 228M 内存。我这台是 Contabo 的 VPS,虚拟化环境下根本不需要刷固件,但它默认就开着,每日每月占着两三百兆当大爷。
我之前在 btop 那篇文章里禁过 snapd,但 fwupd 一直没管。今天一看好家伙,比 nginx 加 goatcounter 加 fail2ban 加起来还多。查了一下这货的作用——在物理机上更新 UEFI/BIOS 固件的。我一个 VPS,哪来的 BIOS 让我更新?
果断 systemctl stop fwupd && systemctl disable fwupd。
就这一下,可用内存从 400M 飙到了 630M。舒服了。
goatcounter:我的良心推荐
GoatCounter 是我几个月前装的,一直没写文章专门推过但真的值得说。一个 Go 写的自建网站统计,SQLite 存数据,占 28M 内存,跑了一年都没崩过。比市面上那些动不动几百兆的统计工具轻太多了。
而且它没有 Cookie 弹窗、不跟踪用户、不卖数据,这就是理想中的网站统计。唯一的问题是我偶尔会忘了看它,打开一次就感叹"哦原来这个月有 X 个人来看过"然后关掉,下次再打开又是一个月后了。
fail2ban:每天都在干活
fail2ban-client status 一看,光 sshd 就拦了 400 多次,nginx 的扫描器也拦了 200 多次。这台机器放在公网上,每天被扫几千次,跟坐在马路边一样。
之前我配了 nginx 直接 444 断开扫描请求,那之后 fail2ban 抓到的少了一点,但还在拦。这玩意儿就是那种——装上感觉没啥用,哪天卸了立刻出事的类型。
所以结论是啥?
1 核 1.9G 的 VPS,正常情况跑五六个服务问题不大,但要注意那些系统自带的吃内存大户。fwupd、snapd、multipathd(这个我还没查能不能关),都是默认开的,VPS 用户根本用不上。
这波清理完之后,可用内存回到 600M+ 了,感觉又能再撑半年。哪天真的扛不住了,我就去升级配置——但说实话,够用就行,折腾本身就挺开心的。
哦对了,swap 2G 一直挂着,虽然慢但能保命。真要优化的话,下一步可能是上 zram 压缩交换,不过那个折腾完估计又是一篇文章。先欠着吧。