大多数人选内存靠猜。要么“以防万一”买得太多,要么凌晨 3 点才认识 OOM killer。其实内存是最容易选型的资源之一,因为只要知道大致数字,各种负载都是可预测的。下面就是这些数字,从跑机器人的 1 GB 小机,一直到想在本地跑大模型的人会去找的 64 GB 服务器。
按用途的大致数字
这些是典型配置在稳定状态下的实测值,不是厂商给出的最低要求。
| 用途 | 实际占用内存 | 合适的套餐 |
|---|---|---|
| Telegram/Discord 机器人(Python、Node.js) | 100–300 MB | Nano 1 GB |
| 静态网站 + Caddy/Nginx | 50–150 MB | Nano 1 GB |
| WordPress + MariaDB,正常流量 | 0.8–1.5 GB | Micro-IP 2 GB |
| 小型应用的 PostgreSQL | 0.5–2 GB(由你通过 shared_buffers 决定) | Micro / Small |
| 带几个工作流的 n8n | 0.5–1.5 GB | Micro 2 GB |
| 运行 5–10 个小服务的 Docker 主机 | 2–4 GB | Small 4 GB |
| Coolify + 构建 + 一个数据库 | 3–4 GB | Small-IP 4 GB |
| 7–8B 大模型,4 位,CPU 推理 | 5–6 GB | Medium 6 GB |
| 14B 大模型,4 位 | 约 10 GB | Pro-32 |
| 32B 大模型,4 位 | 约 20 GB | Pro-32 |
| 70B 大模型,4 位 | 约 40–45 GB | Pro-48 / Pro-64 |
有两点值得注意。第一,“普通”负载和大模型之间的差距巨大:一个机器人和一个 70B 模型相差两百倍。第二,大多数服务在 1–4 GB 上就能跑得很好;人们之所以买多,是因为按一个很少到来的未来去选配置。
大模型的估算公式
语言模型有个简单的估算方法:参数量 × 每个权重的位数 ÷ 8,再加上额外开销。一个约 4.5 位(典型的 Q4 量化)的 8B 模型,权重为 8 × 4.5 ÷ 8 ≈ 4.5 GB。再加 1–2 GB 给上下文窗口(KV 缓存会随上下文长度增长)和运行时,就是 5–6 GB。
说句实话:在只有 CPU 的服务器上,内存只是问题的一半。几个 vCPU 跑 7–8B 模型大约每秒几个 token,70B 大约每秒一个 token。这对批处理任务、后台智能体和私人实验来说够用;但不是能供很多人同时聊天的体验。如果你主要调用托管的模型 API,智能体需要的资源会少得多:参见为 AI 智能体选择 VPS 配置。
别猜,去测
如果你已经有服务器,数字就摆在那里:
free -h # look at "available", not "free"
ps aux --sort=-rss | head -n 8 # the biggest processes, by resident memory
docker stats --no-stream # per-container usage
Linux 会把空闲内存用作磁盘缓存,所以 “free” 总是很小,这很正常。真正重要的是 available:内核此刻能分给程序的内存。如果在最忙的时段 available 仍保持在约 25% 以上,说明配置合适。如果它经常降到零、swap 不断增长,就该升级了。
也检查一下过去是否发生过 OOM 杀进程:
journalctl -k | grep -i "out of memory"
swap 是安全带,不是发动机
在小服务器上配一个 1–2 GB 的 swap 文件 是一份便宜的保险:一次短暂需要更多内存的包更新或 Docker 构建能活下来,而不是被杀掉。但如果某个服务住在 swap 里,每个请求都要等磁盘。swap 是给峰值用的。持续使用 swap 说明你需要更高一档的套餐。
那么到底该买多少?
- 1 GB:一个机器人、一个小 API、一个静态网站。
- 2 GB:任何带数据库或 Docker 的服务的合理默认值。
- 4–6 GB:一台机器上多个服务、在服务器上构建、一个小型本地模型。
- 32–64 GB:只有当某个大东西必须常驻内存时:超过 14B 的本地模型、大型 RAG 索引、一批智能体。这正是大内存套餐的用途。
先选比直觉小一档的配置,观察 free -h 一周,数字说需要再升级。在 EQVPS 升级套餐会保留你的数据,只按比例收取差价(套餐变更如何运作)。
评论
暂无评论。来做第一个吧。