🕸️ 第八章 Web系统的开发原则
📄 一句话概括

云服务器上的【1 核】是一份被切过的时间——通用型超分比 1:2 到 1:4,你实际拿到的单线程性能只有物理 CPU 的 50%~80%,所以两台都写【1 核】的机器跑分能差好几倍。

📝 本节和前面几节的关系

8-12 讲的是怎么给自己这台机器加压,这一节讲在买之前怎么判断它值不值。教材 8-13 的并列关键词只有一个——【标准值】。这一节最有用的是那几张可以照着查的表。

一、云上的【1 核】不是一颗核

租服务器时看到的 vCPU,不是一颗物理核,而是从物理核上切出来的一份时间。 切法有个名字叫超分(overcommit)——一块物理核分给多个 vCPU 轮流用。

算一下就直观了:假设底层是 3.2 GHz 的物理核, 1:2 超分后,你能拿到的那一份大约只有 1.60 GHz; 1:4 超分后约 0.80 GHz——峰值差 2 倍。

所以两台都写着【1 核】的服务器,跑分可能差好几倍。 差别来自两处:底层是哪一代物理 CPU,以及超分比有多高。 这两个数字都没有写在商品页上,这才是最麻烦的地方。

二、先有一份标准值做参照

买之前能自己做的一件事,是先有一份【标准值】当尺子。 入门级 VPS 的合理区间大致是这样的:

低于这些区间的,通常不是【便宜】,而是【在用别人的余量】。 代价不是慢一点,而是你不知道什么时候会被别人抢走—— 同一台机器上午跑得动、晚上跑不动,问题不在你的代码。

这就是为什么买之前先跑一次分,比看商品页上的任何宣传都管用。

三、并发能力与内存的经验值

并发能力有经验值可以对照:

注意这里必须连主频一起看——同样 4 核,2.4 GHz 和 3.0 GHz 差着四分之一。 光看核数不看主频,等于只看车轮数不看发动机。

内存该配多少,按应用类型查表就行,不要凭感觉上 16 GB:

多买的那部分内存不会变成速度,只会变成账单。

四、性能等级与价格档位

买之前还能查到的一项:有些云厂商会把【性能等级】明码标出来。

比如标 20% 等级的含义是——每 1 秒里至少有 200 毫秒能用到物理核, 其余时间排队;标 100% 才是随时可用。

这个数字比【几核】有用得多,因为它直接告诉你【要等多久】。 一个 2 核 20% 的实例,在持续负载下很可能跑不过一个 1 核 100% 的实例。

最后是价格档位,用来判断自己有没有买错:

顺序别搞反:先量出自己的需求,再去挑配置。 先买再猜的结果,通常是钱花了、瓶颈还在—— 因为瓶颈很可能根本不在你加钱的那个地方。

五、动手 Demo:云服务器上的【1 核】,不是一颗核

把超分比换算成主频,差距一下就具体了:

phys = 3.2  # 底层物理核主频
print("  物理核 3.2 GHz,1:2 超分后 1 核约 %.2f GHz" % (phys / 2))
print("  同样 1:4 超分后约 %.2f GHz,峰值差 2 倍" % (phys / 4))

实跑输出:

--------------------------------------------------------------------
云服务器上的【1 核】,不是一颗核
--------------------------------------------------------------------
  vCPU 是按物理核切出来的一份时间,切法有个名字叫【超分】。
  超分比越高,你和别人抢得越凶:

  项目                         数值
  -------------------------------------------------
  主流云厂商通用型超分比       1:2 到 1:4
  你实际感受到的单线程性能     物理 CPU 的 50%~80%
  -------------------------------------------------
  所以两台都写着【1 核】的服务器,跑分可能差好几倍,
  差别来自底层是哪一代物理 CPU、超分比有多高。
  买之前先有一份【标准值】做参照,入门级 VPS 大概是这个区间:

  指标             合理区间       说明
  --------------------------------------------------------
  CPU 单核跑分     350~900        低于 350 多半是超卖严重
  内存             1~2 GB         配缓存和轻量数据库够用
  磁盘 IOPS        2000~10000     SSD 才能上到上限附近
  网络延迟         10~80 ms       看机房离用户多远
  --------------------------------------------------------
  低于这些区间的,通常不是【便宜】,而是【在用别人的余量】。

  并发能力也有经验值可以对照:

  配置                     并发连接      适合什么
  ------------------------------------------------------------
  2 vCPU @2.0~2.4 GHz      200~400       低流量站点、开发环境
  4 vCPU @2.4~2.8 GHz      1000~2000     中小型接口服务
  8 vCPU @3.0 GHz 以上     更高          计算密集、高流量
  ------------------------------------------------------------
  内存该配多少,按应用类型查表就行,不要凭感觉上 16 GB:

  应用类型                  建议内存
  ---------------------------------------------------
  静态站 + CDN              512 MB~1 GB
  WordPress 这类 CMS        1~2 GB
  Node.js/Express 接口     2~4 GB
  Django 加异步任务队列     4~8 GB
  数据库服务器              每 100 GB 数据配 8~16 GB
  模型推理                  16 GB 以上,看模型大小
  ---------------------------------------------------
  买之前能查到的一项:有些云厂商会把【性能等级】明码标出来。
  比如标 20% 等级的含义是——每 1 秒里至少有 200 毫秒
  能用到物理核,其余时间排队;标 100% 才是随时可用。
  这个数字比【几核】有用得多,因为它直接告诉你【等多久】。

  最后是价格档位,用来判断自己有没有买错:

  档位       月费参考         对应场景
  -----------------------------------------------
  入门       15~30 美元       博客、测试环境
  标准       40~80 美元       创业项目、中小接口
  高性能     150 美元以上     数据处理、模型推理
  -----------------------------------------------
  顺序别搞反:先量出自己的需求,再去挑配置;
  先买再猜的结果,通常是钱花了、瓶颈还在。

1.60 GHz 和 0.80 GHz 这两个数字,商品页上都不会写。 它们都是【1 核】,价格可能只差一点,性能却差一倍。 所以这一节最实用的一句话是: 买之前先看【性能等级】或跑一次分,别只看核数。

30 秒实验

  1. 找一个在线的单核跑分网站,测一下你自己电脑的单核分,再和 350~900 这个区间比一比。
  2. 打开你租的云服务器后台,看有没有写【性能等级】或【基准/突发性能】。
  3. 算一下你的数据库有多大,按【每 100 GB 配 8~16 GB 内存】估一次该买多少内存。

常见误区

  1. 错误:几核就是几核,各家都一样。——纠正:vCPU 是按物理核切出来的一份时间;通用型超分比 1:2 到 1:4,实际单线程性能只有物理 CPU 的 50%~80%,底层 CPU 的代数也会再拉开差距。
  2. 错误:便宜的套餐只是性能差一点。——纠正:明显低于标准值区间的,通常是在用别人的余量;代价是你不知道自己什么时候会被抢走。
  3. 错误:内存越大越保险,直接上 16 GB。——纠正:内存要按应用类型配;静态站 512 MB~1 GB 就够,没有异步任务的接口 2~4 GB 也够,多买的不会变成速度。
自测三问(点开对答案) 1. 云服务器上的【1 核】指什么? —— **按物理核切出来的一份时间。** 通用型超分比 1:2 到 1:4,实际能拿到的单线程性能大约只有物理 CPU 的 50%~80%。 2. 入门级 VPS 的合理区间大概是? —— **单核跑分 350~900、内存 1~2 GB、磁盘 IOPS 2000~10000、网络延迟 10~80 ms。** 低于这些区间的,通常是在用别人的余量。 3. 【性能等级 20%】是什么意思? —— 每 1 秒里**至少有 200 毫秒能用到物理核**,其余时间排队;标 100% 才是随时可用。**它比【几核】更能说明你会等多久。**

相关笔记