每周都会有人为一个只需 $7 的 VPS 就能舒舒服服跑起来的业务订购独立服务器,也有人把数据库硬挤在一台早就该换成裸金属的 VPS 上,一挤就是好几个月。这篇选型指南,就是我们给这两类人的建议。文中用的是真实的工作负载和我们自己服务器集群上观察到的数据,并且只要更便宜的方案确实够用,我们就倾向于推荐更便宜的那个。
三种形态,三种故障模式
VPS 是一台物理主机的一个切片:独享的内存、固定份额的 CPU、以 IOPS 计量的 NVMe 额度,以及一个速度很快但与他人共享的网络端口。它的故障方式比较温和:当您用超了它的承载能力,症状只是一周里变得有点慢,而不是宕机,解决办法就是在控制面板里调整配置。
独立服务器是整台机器。没有任何资源是共享的,也没有任何限速,磁盘的表现与规格书上写的完全一致。它的故障方式则不同:硬件由您独占,所以硬盘坏了,要去查看 RAID 状态的人是您;当业务超出它的承载能力时,也没有“调整配置”这回事,只有迁移。
GPU 服务器是挂载了一块或多块加速卡的独立服务器或虚拟机。它按加速卡定价,因此 GPU 闲置的每一个小时都是在烧钱。它的故障方式代价高昂:GPU 利用率只有 15%,是我们在客户账户中见过的最常见的浪费。
VPS 就足够的场景
人们运行的东西大多规模不大。拥有几百名并发用户的 Django、Rails 或 Laravel 应用,Node API,Discord 或 Telegram 机器人,个人自用的 Nextcloud,Matrix homeserver,供二十个朋友联机的游戏服务器:这些都可以在 4 到 8 GB 内存、2 到 4 个 vCPU 上轻松运行。下表来自我们在数千个实例上的实际观察,给出的是能留出 40% 余量的套餐。
| 工作负载 | 最佳套餐 | 原因 |
|---|---|---|
| 静态站点或 WordPress 站点,日访问量低于 50k | VPS-1(2 GB) | nginx 和 PHP-FPM 空闲时只占用 300 MB;其余交给缓存 |
| 数据库与应用同机部署的 Web 应用 | VPS-4(8 GB) | 4 GB 给 PostgreSQL 缓冲区,2 GB 给应用,2 GB 留作余量 |
| Docker Compose 应用栈,5 到 10 个服务 | VPS-4 到 VPS-8 | 每个容器即使空闲也要占用 100 到 400 MB |
| CI runner,单次构建不超过 10 分钟 | VPS-8(16 GB) | 编译器对核心和内存的需求是突发性的,而不是持续的 |
| 团队使用的 WireGuard 中心节点 | VPS-1 | 加密的开销很小;瓶颈在端口速率 |
判断您是否仍适合用 VPS,有一个明显的迹象:平均负载呈尖峰状,磁盘队列很短。用 vmstat 1 观察一分钟:如果 wa 一列始终低于 5,运行队列也很少超过您的 vCPU 数量,就说明您还有余量。
何时裸金属更划算
独立服务器在我们的价目表上 $239 起,所以问题从来不是“它是不是更快”(当然更快),而是“多出来的性能,值不值多花的这笔钱”。在四种情况下,答案是肯定的。
持续的磁盘负载
VPS 有一个 IOPS 额度,我们设得很宽松,但它终究是一道上限。持续写入的 PostgreSQL 或 MySQL 实例、Elasticsearch 节点、正在回填数据的 ClickHouse 表,或者世界很大的 Minecraft 服务器,都会撞上这道上限。在裸金属上,NVMe 完全属于您:一对做镜像的硬盘可以提供超过 600k 的随机读 IOPS,即使在持续 24 小时的导入过程中,p99 延迟也能保持在 1 ms 以内。
持续的 CPU 负载
视频转码、本来就不该放在 VPS 上跑的门罗币挖矿、科学计算批处理任务、一个跑着 32 个线程的繁忙 JVM:任何会让所有核心连续满载数小时的任务,都属于裸金属的工作负载。VPS-16 给您 16 个 vCPU,但它们是共享 socket 上的超线程;而一颗 9950X 给您的是 16 个 5 GHz 的物理核心,同一颗 die 上再没有别人。
可预测的延迟
交易机器人、对 tick 速率要求严格的游戏服务器,以及 VoIP 媒体服务器,关心的不是吞吐量,而是抖动。独立服务器既没有邻居,也没有 hypervisor 的调度,所以一个循环的尾延迟,上限由您自己的代码决定。
超过 32 GB 的内存
我们最大的 VPS 有 32 GB 内存。如果您的工作集更大,那么配备 128 GB 或 192 GB ECC 内存的独立服务器是唯一的选择,而且按每 GB 计算要便宜得多。
何时只有 GPU 才是正解
GPU 服务器是为那些 CPU 无法在可接受时间内完成的工作准备的:运行或训练模型、用 Cycles 或 OptiX 渲染、用 NVENC 转码数百路视频流,或是基于 CUDA 的仿真。它不是为只调用托管 API 的“AI 功能”准备的,也不是为每天只生成十张图的 Stable Diffusion 爱好准备的;这些情况下,按小时计费的云端 notebook 或您自己的台式机更便宜。
有两条规则,能让 GPU 的花销保持在合理范围:
- 买下一块卡之前,先测利用率。
nvidia-smi dmon -s u每秒打印一次 SM 利用率。平均值低于 40%,说明您遇到的是 batching 问题,而不是容量问题。 - 选卡看显存,不看宣传。配备 32 GB 显存的 RTX 5090 可以用全精度运行 8B 到 14B 的模型,也可以运行量化后的 70B 模型;配备 80 GB 显存的 H100 可以用 FP8 运行 70B 模型,并留出真正够用的上下文窗口。如果模型能放进 5090,那么选 H100 就是在为您用不到的显存付费。
一个简单的决策树
- 这个工作负载是否必须有 GPU 才能完成?如果是,就选 GPU,并按显存(VRAM)挑选显卡。
- 它是否会一次连续数小时占满所有核心或把磁盘跑满,或者需要超过 32 GB 内存?如果是,就选独立服务器。
- 否则,就用 VPS。先选比您预想的小一档的配置,用
vmstat观察一周,如果判断错了,再在控制面板中调整配置。
VPS 向上调整配置大约只需一分钟,并会保留您的数据和 IP。从 VPS 换到独立服务器则是一次迁移,这就是我们建议从小处起步的原因:代价低的错误,就是可以回头的错误。
常见技术栈,我们会怎么选
- SaaS MVP(应用 + PostgreSQL + Redis + worker):VPS-4,PostgreSQL 先放在同一台机器上,等数据超过 20 GB 后,再另开一台 VPS 专门放数据库。
- 托管 30 个 WordPress 站点的建站机构:VPS-8,并为每个站点配置独立的 PHP-FPM 进程池;月访问量超过几百万页面后,改用独立服务器。
- 基于 ClickHouse 的分析流水线:从第一天起就用独立服务器;这种磁盘读写模式,恰恰是 VPS 的 IO 额度要限制的对象。
- 公司内部的私有 LLM 端点:70B 模型用一块 H100,14B 模型用一块 RTX 5090;把 vLLM 放在反向代理后面,供大家共用。
- 游戏社区:30 名玩家以内的 Minecraft 或 Valheim 服务器用 VPS-4,装了大量模组、世界又很大的服务器则用独立服务器。
如果您的情况不在这个列表里,请在控制面板中提交工单,描述一下工作负载,并给出一个大致的流量数字。我们会在当天回复选型问题,而且我们宁愿建议您买更便宜的那台服务器。
