技术指南
VPS 规格选择:用负载预算和恢复窗口验收
把 VPS 核数、内存、磁盘和网络标签改写成负载预算,并用峰值、限制与恢复演练验收候选规格。
VPS 规格不是用途标签。先把真实负载、峰值并发、数据增长、备份与恢复窗口写成预算,再用候选实例运行同一组验收探针;只有 CPU、内存、磁盘、网络和恢复门槛同时通过,配置才算够用。‘1 核 1G 能不能建站’没有脱离应用版本、访问形态和服务边界的通用答案。
来源提供了维度,未提供可复查门槛
归档页面把 CPU、内存、磁盘、带宽、流量、地区、备份和常见用途放进同一选择问题,这是可保留的范围框架;但它按 WordPress、Docker 等标签给出固定核数、内存与容量,没有样本、版本、并发、延迟目标、恢复时间或失效条件。VPScope 不沿用这些数字作为推荐。
把“够用”改写成六个可失败条件
| 维度 | 先定义 | 候选实例必须证明 |
|---|---|---|
| 应用 | 峰值请求、后台任务、状态码与延迟目标 | 代表性路径在完整窗口内通过 |
| CPU | 并发、单次工作量、可接受排队 | 尾延迟、吞吐和 PSI 未越界 |
| 内存 | 工作集、缓存、并发峰值和守护进程 | 无 OOM,回收/交换与 memory PSI 可接受 |
| 存储 | 现有数据、日增长、保留期和临时空间 | 容量、inode、写入延迟和升级空间均有余量 |
| 网络 | 用户地区、方向、峰值速率与月传输 | 授权路径在目标时段满足丢包、延迟和吞吐门槛 |
| 恢复 | RPO、RTO、备份大小和重建步骤 | 隔离恢复在窗口内完成且数据可验证 |
硬门槛应在测试前冻结。例如“峰值 20 并发下 p95 小于 250 ms、错误率为 0、无 OOM、恢复少于 30 分钟”是可证伪契约;“打开还挺快”不是。阈值来自业务,不来自本文或套餐名称。
先保存空闲基线与当前约束
stamp=$(date --utc +%Y%m%dT%H%M%SZ)
umask 077
mkdir "sizing-$stamp"
lscpu --json >"sizing-$stamp/lscpu.json"
free --bytes >"sizing-$stamp/free.txt"
df --block-size=1 --output=source,fstype,size,used,avail,pcent,target \
>"sizing-$stamp/df-bytes.txt"
df --inodes --output=source,itotal,iused,iavail,ipcent,target \
>"sizing-$stamp/df-inodes.txt"
for r in cpu memory io; do cat "/proc/pressure/$r" >"sizing-$stamp/$r.pressure"; done
cat /proc/self/cgroup >"sizing-$stamp/cgroup.txt"`free` 的 available 是内核估计在不交换的前提下可供新应用启动的内存,不能把 free 列直接当剩余额度。PSI 则量化任务因 CPU、内存或 I/O 争用而停顿的时间;采集前后增量和应用延迟要对齐,不能仅凭某个瞬时百分比判定套餐。
内存预算从工作集向外相加
| 组成 | 证据 | 容易漏掉 |
|---|---|---|
| 应用工作集 | 稳定窗口 RSS/cgroup memory.current 与峰值 | 并发、缓存预热、队列积压 |
| 依赖服务 | 数据库、代理、任务进程逐项测量 | 连接池、迁移、压缩与导入 |
| 系统与控制面 | 空闲基线、日志、监控、SSH | 面板、更新和备份进程 |
| 故障与增长余量 | 峰值样本乘明确系数并复测 | 滚动发布时新旧版本共存 |
容器默认可以使用宿主调度器允许的资源。设置 `--memory`、`--cpus` 或编排限制前先测工作集,并在限制下重跑验收;硬限制能保护宿主,却不会自动让应用优雅降级。Swap 可以提供缓冲,但频繁换页会增加延迟,不能把磁盘容量折算成等价 RAM。
CPU 要看排队和尾延迟,不只看核数
相同 vCPU 数的实例可能有不同架构、频率、共享策略和邻居竞争。用代表性请求在目标并发下记录吞吐、p50/p95/p99、失败、进程 CPU 时间与 CPU PSI;跨早晚窗口重复。并发增加后吞吐不再上升、尾延迟陡增或 PSI 持续增长,说明当前执行路径已经排队,不能用空闲平均负载掩盖。
| 工作形态 | 更应观察 | 不能直接推断 |
|---|---|---|
| 串行请求/解释器 | 单请求 CPU 时间和尾延迟 | 多一倍核数会让单请求快一倍 |
| 并行 worker | 吞吐、上下文切换和队列长度 | worker 越多越快 |
| 编译/压缩/图片 | 有界任务完成时间与在线请求影响 | 峰值跑分等于长期性能 |
| 共享 vCPU | 多个时段的波动与 steal/PSI | 一次样本代表宿主稳定性 |
磁盘同时预算 bytes、inode、延迟和恢复空间
容量公式至少包含当前数据、镜像/软件、日志保留、数据库临时文件、备份暂存、升级时新旧版本共存和增长窗口。小文件负载可能先耗尽 inode;数据库即使容量充足,也可能先被同步写延迟限制。`df` 回答文件系统可用块和 inode,不回答底层持续性能或备份是否可恢复。
候选容量 = 当前可恢复数据
+ 软件与镜像
+ 日增长 × 保留天数
+ 备份/导入/升级临时峰值
+ 明确的故障与增长余量带宽、月流量和用户路径分开计算
| 问题 | 计算或测试 | 证据边界 |
|---|---|---|
| 峰值能否送完 | 峰值响应 bytes × 每秒请求,加协议开销 | 端口速率不是应用持续吞吐保证 |
| 月传输是否够 | 入站与出站分别按真实日型积分 | 平均值会隐藏活动/备份峰值 |
| 目标用户是否可用 | 授权地区在目标时段测 RTT、丢包和应用请求 | loopback 或就近测速点不能代表用户 |
| 受限后会怎样 | 核对限速、超量费、暂停与重置规则 | “不限流量”不能自行解释为无约束 |
地区不是延迟的替代字段。同一城市、不同运营商、IPv4/IPv6 和回程都可能给出不同路径;采购前用自己控制的区域探针测试真实 TLS/应用入口,并把节点、时间、方向和流量预算写入证据。
用途只决定测试夹具,不决定套餐
| 负载 | 必须放入夹具 | 最先关注 |
|---|---|---|
| 静态站/反代 | 真实资源大小、TLS、缓存冷暖与峰值连接 | 网络、文件缓存、尾延迟 |
| 动态 CMS | 应用、数据库、插件、缓存、登录与发布 | 内存、数据库延迟、备份恢复 |
| 多容器 | 所有常驻服务、健康检查、日志与更新共存 | 总工作集、端口、卷和故障隔离 |
| 数据库 | 代表性数据、读写比例、同步与恢复 | 内存、写延迟、容量和 RTO |
| 构建/批处理 | 最大工件、并发任务与在线流量共存 | CPU、临时磁盘、完成窗口 |
候选套餐用同一协议验收
- 先在与生产一致的系统、应用、依赖版本和数据尺度上建立空闲基线。
- 预热后运行正常、峰值和降级三种窗口,保存每次原始样本与失败。
- 逐级施加明确 CPU/内存限制,确认应用在预算边界内通过,而非只在无限制宿主通过。
- 同时观察延迟、吞吐、错误、RSS/cgroup、PSI、磁盘 bytes/inode、写入延迟和网络传输。
- 执行一次独立备份与恢复,验证数据、权限、DNS/TLS 切换和 RTO。
- 跨目标业务时段重复;结果波动超出门槛时先记录未知,不选择性保留最好一次。
- 把升级路径、停机、IP 变化、磁盘缩容限制和回滚成本写进采购决策。
隔离演练显示 CPU 可能先于内存成为边界
VPScope 在单机 loopback 夹具中让服务常驻分配 32 MiB,依次以并发 1、4、12 完成 30、60、120 次校验请求,并保存 RSS、进程 CPU 时间、延迟、日志增长、PSI 和清理证据。210 次响应全部通过;峰值 RSS 为 55,424 KiB,按 1.5 倍得到的 83,968 KiB 只是一项服务候选预算,不包含系统、代理、数据库、监控、备份或增长。
并发 1 的 p95 为 2.817 ms;并发 4 为 8.456 ms;并发 12 为 17.182 ms,且最大值达到 1,050.692 ms,吞吐从并发 4 的 659.913 req/s 降至并发 12 的 106.204 req/s。这个结果只能证明该夹具出现排队与长尾,不能映射到任何 VPS 核数、厂商或真实应用。测试进程已终止,回环端口关闭,一次性目录删除。
把方案写成通过、失败与未知
| 结论 | 写法 | 下一步 |
|---|---|---|
| 通过 | 所有硬门槛通过,余量和观察窗已记录 | 小流量上线并继续监测 |
| 失败 | 明确哪一维、哪一窗口越界 | 优化后复测或换规格 |
| 未知 | 缺少目标地区、峰值、恢复或限制证据 | 补测,不用宣传参数代填 |
最低价只应在多个通过方案之间比较。若候选只能通过平均负载、无法在发布、备份、峰值或单点故障窗口维持门槛,就不是“先买小再说”,而是把已知风险推给上线后。反过来,超配也不是永久结论:监控证据稳定后可提出降配候选,并按同一协议复测与回滚。
下单前的可复查清单
- 工作负载版本、数据尺度、峰值并发、用户地区和增长窗口已冻结。
- 延迟、吞吐、错误、RPO、RTO 与可用性硬门槛在测试前写明。
- 空闲基线包含 CPU、MemAvailable、文件系统 bytes/inode、PSI 和实际 cgroup 约束。
- 正常、峰值、发布、备份和故障恢复窗口都用代表性夹具运行。
- 内存预算逐项包含应用、依赖、系统、控制面、共存与增长,不把 Swap 当 RAM。
- CPU 结论来自尾延迟、吞吐、CPU 时间和跨时段压力,不来自核数标签或一次跑分。
- 存储同时验证容量、inode、延迟、临时峰值与独立恢复。
- 网络按地区、运营商、IP 族、方向和目标时段验证,月流量按真实日型计算。
- 限制条件下重新验收,失败样本和未知项没有被删除。
- 升级、回滚、IP/磁盘限制、续费和迁移成本已经记录。
- 结论明确写为通过、失败或未知,并列出重新评估触发。