第5章 · 趣味学习

系统性能评价:饿了么么的餐厅评分体系

网络建好了,订单"嗖嗖"地跑。可老王又愁了——午高峰时App卡得像幻灯片,骑手抱怨定位延迟,客服被投诉电话淹没。老王拍桌子:"是不是该换服务器了?加机器!加钱!"

小明拦住他:"老板,先别砸钱。你开餐厅也不知道哪桌翻台慢、哪道菜拖后腿吧?得先设计评估——这就是系统性能评价。"他掏出一张纸画了个餐厅评分表——"吞吐量就是翻台率,响应时间就是上菜速度,可用性就是营业时长。"

🖥️ 5.1.1 计算机性能指标:11道体检项目

评价一台计算机就像给厨师体检——指标一大把:

指标 意思 餐厅类比
主频(时钟频率)CPU工作节拍,越高越快。但现在还得看核数厨师切菜手速
高速缓存L1/L2/L3,回写结构支持读写、写通只支持读,越大越好厨师手边的备料台
运算速度MIPS(定点)/MFLOPS(浮点)每分钟能炒几盘菜
运算精度字长,8/16/32/64位,越长越精刀工精细度
内存容量越大可存数据和程序越多,减少磁盘交换后厨冷库大小
存取周期连续两次读/写最短时间,越短越好从冷库取一次料多快
PDR数据处理速率PDR=L/R,度量CPU和主存速度,不含缓存后厨综合出菜节奏
响应时间事件从发生到结束的时间下单到上菜的等待
RASIS特性可靠性/可用性/可维护性/完整性/安全性五合一餐厅综合信誉
平均故障响应时间(TAT)出故障到确认修复前的时间,越短越好停水停电后多久恢复营业
兼容性与其他系统并存互通的能力能不能用别家的餐盒和收银机
老王
响应时间不就是"快不快"吗?还有啥门道?
小明
米勒1968年就给了三个经典阈值——0.1秒用户感觉不到延迟;1秒是愿意接受的"立即响应"极限(0.1~1秒可接受,超1秒感觉有延迟但10秒内还能忍);10秒是保持注意力的极限,超过就流失走人。饿了么么午高峰卡3秒,用户已经在骂街了。

RASIS里可靠性用MTBF/MTTF衡量(平均故障间隔/无故障时间),可维护性用MTTR(平均修复时间)衡量。

主频像厨师切菜手速——手快不一定出菜快,还得看几个厨师一起干(多核)。2000年IBM出第一款双核后,单看主频已经不够了,得看核数。现在服务器CPU八核、十二核甚至96核。

🌐 5.1.2 网络性能指标:五类评分卡

网络是个由多种设备组成的集合体,性能指标分五类:

类别 关注啥 餐厅类比
设备级路由器吞吐量、延迟、丢包率、转发速度单个传菜员跑多快
网络级可达性、传输速率、信道利用率、带宽利用率、延迟抖动整个传菜动线通不通畅
应用级QoS、对语音/视频的支持程度不同菜品的服务标准
用户级可靠性、可用性(长周期运行系统最重要)食客长期口碑
吞吐量无帧丢失时设备能接受的最大速率,帮找瓶颈翻台率——高峰期能扛多少桌
⚠️ 易踩坑:网络吞吐量依赖当前负载,测它要在不同时间(一天不同时刻/一周不同天)多次测才全面。两个100Mbps以太网被10Mbps网连起来,10Mbps那段就是瓶颈。吞吐量定义为"剩余带宽"才有实际意义。

⚙️ 5.1.3-5.1.5 操作系统/数据库/Web服务器指标

操作系统五指标:可靠性、吞吐量(单位时间处理信息量)、响应时间(提交作业到出结果,即周转时间)、资源利用率(设备实际使用时间占比)、可移植性。

数据库管理系统(DBMS)四功能:数据库描述(定义逻辑结构)、数据库管理(配置/存取/完整性/安全性)、查询和操纵(检索和修改)、维护(导入导出/结构维护/恢复/性能监测)。性能指标包括:数据库大小、单文件大小、表数量、单表大小、记录数量、单记录大小、索引数量、最大并发事务处理能力、负载均衡能力、最大连接数

Web服务器:Unix/Linux下常用Apache,Windows用IIS,跨平台有WebSphere/WebLogic/Tomcat。核心指标:最大并发连接数、响应延迟、吞吐量(每秒处理请求数)、成功/失败请求数、每秒点击次数、尝试连接数、用户连接数。

操作系统像餐厅的管理规章——规章好坏决定厨房运转效率。数据库像账本和仓储台账——能记多少笔账、多少人能同时查。Web服务器像前台接待——能同时接多少客、接单多快、上菜多快。

🧮 5.2 性能计算:把分数算出来

指标种类繁多,怎么算?四种主要方法:定义法(按定义直接取理想值)、公式法(基本定义衍生的复合计算)、程序检测法仪器检测法(实测,结果因环境差异大)。实际中常复合计算后加权处理。

1. MIPS计算MIPS = IPC × Fz(IPC=每时钟周期执行指令数,Fz=主频)。例:P4/2.4E的IPC=2,Fz=2400MHz → MIPS=2×2400=4800MIPS。

2. 峰值计算:浮点计算峰值=每秒能完成浮点运算最大次数。分理论浮点峰值(CPU主频 × 每时钟周期浮点运算次数 × CPU数)和实测浮点峰值

3. 等效指令速度(吉普森/Gibson法):不同指令速度不同,按比例加权。经典比例:加减50%、乘15%、除5%、程序控制15%、其他15%。改一个小比例指令的CPI也能大幅影响等效速度——如FPSQR占2%但CPI=100,改到4.0后等效CPI从3.92降到2.00,速度翻倍。

等效指令速度像"算一道菜的平均耗时"——不能只算蒸饭(快)还要算慢菜(炖汤慢)。吉普森法就是按各菜品占比加权算平均出菜时长。改一道占2%但极慢的菜(FPSQR),整体平均速度能快一倍。

⚡ 5.3.1 阿姆达尔定律:别只优化一个小环节

阿姆达尔定律:系统某部件用更快方式执行,性能提升程度取决于该部件被使用的频率(占总执行时间比例)

加速比取决于两因素:

  • 📊 增强比例:可改进部分占原总执行时间的比例(≤1)
  • 🚀 增强加速比:整个程序都用增强方式后快多少(原时间/增强后时间)

改进后执行时间 = 未改进部分时间 + 改进部分时间。加速比 = 原总时间 / 改进后时间。

老王
我把上菜环节优化到极致不就行了?
小明
不行!阿姆达尔定律告诉你——如果上菜只占整个用餐流程的20%,你把上菜优化到0秒,整体也只快25%。因为剩下80%(点单/备料/结账)一点没变。瓶颈不优化的地方,优化别处收益有限。这就是为啥不能只砸钱加CPU——如果瓶颈在数据库,加CPU白搭。

⚖️ 5.3.2 负载均衡:多开几桌分流客人

负载均衡=多台服务器对称组成集合,每台等价地位,外部请求均匀分配到某一台,接到的独立回应。多个服务器同干一个任务就构成集群——用最少投资获接近大型主机的性能。

五种负载均衡技术

技术 原理 优缺点
特定服务器软件HTTP的Location指令重定向可能死循环,实际少用
基于DNS同一名字配多个地址,解析随机返回简单,但刷新延迟、不知服务器差异
反向代理代理服务器转发请求到内部多台可结合缓存+安全,但代理易成瓶颈
基于NAT地址转换网关均匀映射到内部服务器硬件第四层交换性能优,软件方案更实际
扩展(半中心)请求经中心转发,回应直接返客户中心负担小,适合上百台大规模

服务器负载均衡本地负载均衡(本地服务器群)和全域负载均衡(不同地理位置服务器群间)。全域负载均衡特点:服务就近提供(地理无关性)、提高访问质量、提高响应速度、提高资源利用效率、避免数据中心单点失效。

🎮 实战场景:饿了么么午高峰一台服务器扛不住——上负载均衡。DNS均衡最简单(同域名解析到多台IP),但要即时生效得用NAT或反向代理。规模上百台就用扩展半中心法,回应直接返客户不回中心,省带宽。

🏁 5.4.1 基准测试程序:标准考试卷

把应用中最常用最频繁的核心程序作为评价标准,叫基准测试程序(benchmark)。六大代表:

程序 测啥 特点
Dhrystone整数测试C语言100条语句,1VAXMIPS=1757 Dhrystones/s
Linpack浮点测试FORTRAN,浮点加乘,MFLOPS/GFLOPS/TFLOPS
Whetstone综合测试FORTRAN,浮点/整数/调用/变址/转移/超越函数,Kwips
SPEC全面反映机器性能30+厂商联盟,以VAX-11/780为基数,参考价值高
TPC事务处理/数据库/决策支持TPC-A/B/C/D/H/W,TPC-C是OLTP工业标准
Linpack测试高性能计算机浮点高斯消元法解线性方程组,HPL是TOP500排名依据

Linpack三档:Linpack100(100阶,只编译优化不改代码)、Linpack1000(1000阶,可算法优化)、HPL(无规模限制,可调矩阵大小/CPU数/优化方法,峰值=计算量(2/3·N³-2N²)/时间T)。

基准测试像"厨师统一考试"——不比谁招牌菜花哨,而是统一考刀工(Dhrystone)、火候(Linpack)、综合手艺(Whetstone)。SPEC是业界公认综合卷,TPC-C是"真实世界"餐厅接单能力的标准考卷。HPL是超算界的"高考",TOP500超算排名就看它。

🌐 5.4.2 Web服务器性能评估:压力测试

Web服务器核心参数:最大并发连接数、响应延迟、吞吐量(每秒处理请求数)。三种评测方法:基准性能测试(用基准程序测)、压力测试(模拟大量并发操作测指标找瓶颈)、可靠性测试

IxWeb(IXIA公司)是高性能业务负载生成与分析系统:每端口独立CPU/内存跑Linux,有完整TCP/IP栈,可模拟大量Web客户产生大量并发连接。支持GET/POST/PUT/HEAD/DELETE,支持SSL/HTTPS,可仿真FTP大文件下载,配置"思考时间"模拟真实用户行为。

压力测试像"午高峰演习"——不是真来那么多客人,而是模拟500桌同时点菜,看餐厅会不会崩、哪道菜先卡壳。IxWeb就是雇来的"群众演员公司",能模拟成千上万个食客同时点单、翻桌、催菜,测出餐厅的真实上限和瓶颈。

📊 5.4.3 系统监视:给餐厅装监控

系统监视目标=评估系统性能。需收集三种性能数据:

数据类型 作用 餐厅类比
常规性能数据识别短期趋势(如内存泄漏),一两个月后求平均存档,做容量规划每日流水账
比较基准数据发现缓慢长期变化,与历史对比排障调整月度/季度对比报表
服务水平报告数据确保满足服务水平,可能给决策者看给老板的KPI报表

三种监视方式:①系统自带命令(UNIX的w/ps/last、Windows的netstat);②查系统记录文件;③集成命令+文件+可视化界面的工具(Windows的Perfmon)。专业平台有IBM Tivoli、HP Sitescope等统一监控。

🎬 故事结局:小明用阿姆达尔定律找出真正瓶颈(不是CPU而是数据库连接),上负载均衡分摊午高峰压力,用TPC-C基准选了合适的数据库服务器,IxWeb压力测试验证极限,最后装上系统监视长期跟踪。午高峰再不卡了,骑手定位秒回,投诉电话消失了。

老王服了:"原来性能不是砸钱加机器,是量、算、设计、评估四步走。"小明合上笔记本:"这才第五章,离架构师还远着呢。"