第 4 章 · 多台服务器第 1 页,共 5 页
一台不够时,到底要几台?
晚饭前每秒的请求已经超过一台服务器的容量。添几台才够?先要估出高峰时每秒会来多少个请求。
为什么需要
百家菜是本课程虚构的家常菜谱网站。第 2 章讲过,它的一刻不停地处理时,平均每秒能处理约 50 个,这是它的。如今晚饭前每秒的请求已经超过这个数,而换更强的电脑越来越贵,最强的一档也有尽头。
另一条路,是添几台同样的服务器,让它们一起分担,这叫(horizontal scaling);换一台更强的,叫。可到底要添几台?站长先得估一估:晚饭高峰时,每秒会来多少个请求。
怎样做
估算从「每天有多少人来」开始。一天之内至少来过一次的人数,叫(daily active users),同一个人一天来十次也只算一个。百家菜现在约有 20 万(200,000)日活跃用户。它容易和另外两个数混在一起:
- (concurrent users):某一刻正在用的人数。大家来的时间有早有晚,它比一天的人数少得多。
- :数的是请求,不是人。打开一道菜谱、搜一次菜,都会发出请求;低头看菜谱的那几分钟里,一个也不发。
估算还会碰上很大的数。中文每四位一档,用万、亿;英文每三位一档,用 thousand、million、billion。一百万是 100 万(1,000,000),英文叫 one million;十亿是 10 亿(1,000,000,000),英文叫 one billion。
先猜再看:一千和一百万在数轴上的位置
先看这里一千和一百万两个标记先摆在 3 亿和 7 亿处,那只是起点,不是答案。用按钮把它们挪到你认为对的地方,再按「揭晓」;揭晓以后,换成「每格十倍」再看。
一条从 0 到十亿的等距数轴,分成 10 格,每格 1 亿。数轴上有一千和一百万两个可以移动的标记,十亿在最右端。用数轴下面的按钮移动标记,揭晓以后,数轴上画出它们实际的位置。
还没揭晓。挪好两个标记以后按「揭晓」。
等距的数轴上,相邻两格都差 1 亿;上,相邻两格的数差 10 倍,左端从 1 开始:从 0 起,乘多少次 10 都还是 0。
十亿是一百万的 1,000 倍,一百万又是一千的 1,000 倍:一百万秒约 11.6 天,十亿秒却约 31.7 年(推算)。美国的一项研究请成年人把这几个数摆到数轴上,约一半的人能按比例摆放,其余的人几乎都把一百万放在一千和十亿的大约正中间,好像它们是等距的几档(Landy 等,2013)。真实的应用常有这么多人用:2026 年 6 月,Meta 旗下 Facebook、Instagram 等各款应用平均每天合计有 36.0 亿人使用。
有了这些,就能用几个大致的数很快算出结果大概有多大,这叫(back-of-the-envelope estimation):
- 一天的请求:20 万人,每人每天约有 30 个请求送到服务器,合计 600 万个(6,000,000)。这里只数要服务器处理的请求,例如打开一道菜谱、搜一次菜。
- 平均每秒:一天有 86,400 秒,600 万 ÷ 86,400 ≈ 69 个。
- 高峰每秒:请求并不均匀,晚饭前最多。最忙的时段里的访问量叫(peak load),它是平均的几倍,叫。这里设成 3 倍,约 208 个。
- 要几台:208 ÷ 50 ≈ 4.2,至少要 5 台。
可不能让每台的都到 100%:第 2 章讲过,越接近容量,涨得越急;估算的每个数也可能不准,还可能坏掉一台。所以要留(headroom),也就是比预计的高峰多准备一些能力。例如让每台的负载最多到 70%,也就是每秒 35 个:208 ÷ 35 ≈ 5.9,要 6 台;也可以先算出 5 台,再多备一台,同样是 6 台。
请求量估算器:从每天来多少人,算到要几台服务器
先看这里先看默认的三个数算出要几台;再把高峰倍数换成 4 倍,或者把余量换成「不留」,看那一排服务器怎样变。
高峰时每秒约 208 个请求,平均分给 6 台,每台约 35 个:
估算器下面是一排服务器,每个框是一台;每秒的请求平均分给各台,框里的数是这一台的负载。
框里的数是这一台的(分到的请求 ÷ 容量);留余量时,虚线是 70% 的上限。
一天 600 万个请求,平均每秒约 69 个,高峰约 208 个。按高峰算,每台最多 35 个,要 6 台。
人数、每人的请求数、高峰倍数和每台每秒 50 个的容量都是演示值,真实的数要看自己网站的记录和实测。
3 倍是演示用的数,比下面两个真实网站平日的高峰都高。按维基媒体基金会公开的数据推算,2026 年 10 月中旬的一周里,日文维基百科每天最忙的一小时,浏览量是当天平均的 1.6 到 1.85 倍;读者遍布世界的英文维基百科只有 1.24 到 1.29 倍。高峰倍数没有通用的值,要看自己网站的记录。
代价是什么
估算的代价,是每个假设都可能差好几倍:手机游戏 Pokémon GO 2016 年上线时,访问量达到了最初目标的 50 倍(第 2 章讲过)。所以估算只能定下大致的台数,上线前还要实际测一测,并且留出余量。
按高峰准备也要花钱:按平均算,2 台就够;按高峰留了余量,要 6 台,除了晚饭前后,大部分时间都有几台闲着,第 5 页讲怎样让台数自动增减。
资料来源
以下资料均于 2026-10-22 至 2026-10-23 访问。