服务器服务器里面有什么

为什么需要

第 1 章里,你的手机向百家菜的(server)发出(说明想要什么的消息),服务器发回(里面是结果)。百家菜是本课程虚构的家常菜谱网站,放在一台租来的电脑上。每天 17:30 到 18:30,晚饭前打开菜谱的人最多,页面越来越慢,偶尔打不开。要弄清为什么,先看看这台电脑里有什么。

服务器并不是一种特别的机器。它就是一台电脑,里面装的东西和你的笔记本电脑是同一类;不同的是,它一直开着、连着网,运行着专门等请求的程序,请求一到就处理,再发回响应。「服务器」有时也指这些程序;这一章说的服务器,指这台电脑。

怎样做

打开这个框,里面主要有四样:

  • 网络:网卡把电脑连上网,请求从这里进来,响应从这里出去。
  • (CPU):按步骤执行程序。百家菜服务器的处理器有 4 个核心,每个都能单独执行程序,所以能同时处理几个请求。
  • (RAM):放正在用的程序和数据,存取很快,一断电就清空。这台有 16 GB。
  • (disk):长期保存全部的菜谱、照片和程序,断电不丢,但存取比内存慢得多。这台是 500 GB 的(SSD),用芯片保存数据,没有会转动的零件;另一种机械硬盘靠转动的盘片读写,读零散的小块数据时还要慢约一百倍。

服务器上同时运行着几个程序,各管一类请求:网页服务发出菜谱页,菜谱搜索按名字找菜,照片服务发出成品照片。这种专门负责一类功能、通过(服务器公开的请求清单)对外提供的程序,叫(service)。它不是日常说的客服或服务态度,而是一个程序。

下图演示一个请求怎样用到这几样组件。

一个请求在机器里:用到的组件依次亮起

先看这里选一种请求,按「下一步」看哪个组件亮起;再换成「只在硬盘上」播一遍,比一比两种情况的读数。

这次请求要
要用的数据此刻
两种情况比一比
已经在内存里只在硬盘上
用到的组件——
读一次数据——

百家菜服务器内部的示意图:上方一排是服务器上运行着的三个服务,下面的大框是服务器,里面有网络、处理器、内存和固态硬盘四样组件。每一步用到哪样组件,写在图下的说明里。

尚未开始,共 5 步

服务器的配置和上面的三个服务都是为百家菜虚构的。

内存和硬盘有三点不同:

  • 快慢:是十亿分之一秒,微秒是百万分之一秒。随机读一次内存(到任意位置取一小块数据)约 130 纳秒,实测在 115 到 180 纳秒之间;随机读一次固态硬盘约 100 微秒,约是读内存的 770 倍。
  • 断电:内存一断电就清空,硬盘上的数据还在。
  • 大小和价钱:这台有 16 GB 内存、500 GB 硬盘。按微软 Azure(出租电脑和在线服务)公布的价格,同样大的空间,内存的月租是固态硬盘的二十到将近四十倍。

所以程序和数据平时存在硬盘上,要用时再读进内存。GB 是一种:KB、MB、GB、TB 每往上一档约大一千倍,1 TB 约是 1,000 GB。

你平时说的「手机内存 256G」,指的是长期保存照片和 App 的存储空间,相当于这里的硬盘;日常这样叫,有的手机规格页也写作「机身内存」。这一章的内存,专指规格页上另列的「运行内存」:一部手机存储 256 GB、运行内存 8 GB,照片放在前者里,关机不会丢;后者才是这里说的内存。

纳秒、微秒和毫秒(千分之一秒)相邻两档都差 1,000 倍,人对这么短的时间没有感觉。比较这样的数,常按十倍一档来数:相差十倍算一个(order of magnitude),相差一千倍是三个。下图把机器里的时间放大成人的时间。

时间放大镜:把机器里的时间放大成人的时间

先看这里先猜一猜读一次固态硬盘放大以后有多久,再换几种倍数看看。

按十亿倍放大,读一次内存(约 130 纳秒)变成约 130 秒,两分钟多。读一次固态硬盘(约 100 微秒)会变成多久?

时间放大镜的示意:一条按十倍一档排的刻度尺,上面标出四件事在机器里用的时间,下面写着放大以后的时间。同样的内容列在下面的表里。

四件事放大以后
这件事机器里放大以后
1读一次内存130 纳秒约 2.2 分钟
2读一次固态硬盘100 微秒?
3从美国东部到西欧来回一次83 毫秒?
4从美国东部到东南亚(新加坡)来回一次224 毫秒?

放大以后的时间,是机器里的时间乘以放大的倍数。这一页的倍数和放大以后的时间都是用公开的数推算的,用到的数见下面的资料来源。

按十亿倍放大,读内存两分钟多,读固态硬盘一天多,跨大洲来回一次却要好几年。读内存和跨大洲的来回差约 64 万到 172 万倍,也就是大约六个数量级。

这个放大镜有一处不成立:放大只保留了倍数,人并不真要等这么久。读一次固态硬盘实际只要 0.1 毫秒,人察觉不到;人感觉得到的慢,是许多次这样的操作加在一起。

代价是什么

代价是要在快、大、便宜和断电不丢之间取舍:内存快,却小、贵,一断电就清空;硬盘大、便宜、断电不丢,却慢几百倍。内存装不下全部数据,要读的数据只在硬盘上时,请求就慢下来;第 5 章讲缓存时,会细讲怎样把常用的结果留在更快的地方。

每样组件也都有上限:核心就那么几个,同一时刻能处理的请求有限;内存就那么大,放不下的只能留在硬盘上。服务器还必须一直开着:一断电或重启,内存清空,程序和数据都要重新读进来。

资料来源

以下资料均于 2026-10-22、2026-10-23 和 2026-10-25 访问。

  1. What is a web server?MDN Web Docs(Mozilla),2025-04-29
  2. VII. Port bindingThe Twelve-Factor App,2017
  3. Semiconductor glossary: DRAM三星半导体,未注明日期
  4. What is an SSD?美光(Micron),未注明日期
  5. napkin-mathSimon Eskildsen(GitHub,内存等几类数字于 2026-10-23 重测),2026-10-23
  6. A Look into Intel Xeon 6's Memory SubsystemChester Lam,Chips and Cheese,2025-09-26
  7. Azure network round-trip latency statisticsMicrosoft Learn(数据为截至 2026-07-30 的 30 天),2026-08-20
  8. SI prefixes国际计量局(BIPM),未注明日期
  9. Why does Explorer use the term KB instead of KiB?Raymond Chen,The Old New Thing(微软开发者博客),2009-06-11
  10. HUAWEI Mate 70 规格参数华为,未注明日期
  11. vivo X200 专业影像旗舰vivo,未注明日期
  12. Dsv5 size seriesMicrosoft Learn,2026-03-11
  13. Esv5 size seriesMicrosoft Learn,2026-04-02
  14. Azure 零售价格接口:美国东部 D2s_v5、E2s_v5、D96s_v5 三种虚拟机的价格微软(取 Linux 系统的按需价,2021-11-01 起生效),未注明日期
  15. Select a disk type for Azure IaaS VMs - managed disksMicrosoft Learn,2026-09-15
  16. Azure 零售价格接口:美国东部 P30、E30 两种托管磁盘(1,024 GiB)的价格微软(高级固态硬盘每月 135.17 美元,标准固态硬盘每月 76.80 美元),未注明日期