有人问我这台机器上跑了什么,我说一个静态博客,对方的表情大概就是"那也太浪费了"。
其实不浪费,只是它干的活跟你想象的不一样。
先说数字#
开机之后 free -m 是这样:
total used free shared buff/cache available
Mem: 1613 430 270 2 1080 1182
Swap: 0 0 0标称 2G,实际可用 1613M,差的那些是内核和保留区。已经用了 430M,这里面包括系统本身、SSH、几个监控 agent,以及 Caddy。
Caddy 单独看,ps 显示的常驻内存是 38M 左右。它同时在跑 HTTP/1.1、HTTP/2、HTTP/3,还管着两张证书的自动续期,38M 我觉得挺客气了。
磁盘 40G,现在用掉 3G,其中整个站点的产出物是 540K。
它擅长什么#
静态博客本质上就是个文件服务器。请求进来,找文件,发出去。没有数据库查询,没有模板渲染,没有 PHP-FPM 之类的常驻进程。CPU 基本闲着,负载常年在 0.0x。
这种"只读型"的服务是 2 核小机器最舒服的场景。哪怕突然来一波流量,它也只是把文件往网卡里塞,塞不动的时候瓶颈在带宽,不在 CPU。
反过来说,有几件事我不建议在这上面做:
- 跑数据库。MySQL 在默认配置下就能吃掉几百兆,再配上应用,1.6G 立刻见底,然后开始 OOM,然后你半夜被叫起来。
- 在这台机器上编译。Hugo 构建很快,但那是几万个文件读写的活,小机器的 IO 和内存都不占优势。我干脆在本地构建,服务器只接收成品,540K 传上去就完事。
- 同时跑好几个重型服务。JVM 那类东西起步就是几百兆,两个就把内存吃干净了。这不是它的错,是选错了工具。
“够用"是个被低估的词#
买机器的时候很容易陷入一种思路:先按最坏情况买,将来总会用上。结果钱花了,资源常年空着,还要为它做安全加固、打补丁、看监控。
我的看法比较土:先想清楚这台机器要负责什么,按它的实际工作去买。真要扩容,加配置比迁移数据容易得多。
这台 1.6G 的小机器,现在扛着一个每天可能只有几十个人访问的博客。这个负载对它来说接近于静止。真正花时间的不是它,是我——写东西、改样式、想标题。
所以别问 2 核 2G 够不够。先问你要它干什么。