关键性能指标:响应时间、吞吐量、并发用户数、资源利用率、QPS、TP99
性能建模这件事,说白了就是先搞清楚「我们要衡量什么」。没有指标,架构决策就是拍脑袋。我见过太多团队,一上来就堆机器,结果瓶颈根本没找到。嗯,今天咱们就把这几个核心KPI掰开揉碎讲清楚。
响应时间:用户感知的第一道门
响应时间,就是从用户发出请求到收到完整响应所花的时间。我习惯把它拆成三部分:网络传输时间、服务处理时间、数据访问时间。
你想想看,用户点一下按钮,等了两秒还没反应,他大概率就关页面了。我在电商项目中遇到过,首页加载从800ms涨到1.2s,转化率直接掉了5%。这就是响应时间的威力。
- 前端响应时间:从浏览器发出请求到DOM渲染完成
- 后端响应时间:从网关收到请求到返回响应
- 端到端响应时间:用户真实感知的完整链路
吞吐量:系统能扛多少活
吞吐量,单位时间内系统能处理的请求数量。常见单位有:RPS(每秒请求数)、TPS(每秒事务数)、QPS(每秒查询数)。
这三个概念容易混淆。我简单解释一下:
- QPS:每秒查询次数,常用于读场景,比如数据库查询
- TPS:每秒事务数,一个事务可能包含多个操作,比如下单(查库存+扣余额+生成订单)
- RPS:每秒请求数,范围最广,任何请求都算
我曾经帮一个金融项目做压测,他们的TPS只有200,但业务要求是1000。后来发现是数据库连接池配小了,线程都在等连接。调大连接池后,TPS直接飙到1200。你看,有时候问题就这么简单。
并发用户数:系统同时能服务多少人
并发用户数,不是「注册用户数」,也不是「在线用户数」。它指的是同一时刻正在与系统交互的用户数量。
举个例子:一个直播间有10万人同时在线,但真正在发弹幕、点赞、刷礼物的可能只有5000人。这5000人才是并发用户数。
资源利用率:钱花在刀刃上了吗
资源利用率,就是CPU、内存、磁盘、网络这些硬件被用了多少。我一般关注这几个指标:
| 资源 | 健康范围 | 危险信号 |
|---|---|---|
| CPU | 40% - 70% | 持续 > 90% |
| 内存 | 60% - 80% | 接近100%或频繁GC |
| 磁盘IO | 等待队列 < 2 | iowait > 30% |
| 网络带宽 | 使用率 < 60% | 接近上限 |
我个人习惯,CPU利用率超过70%就开始预警。为什么?因为一旦有突发流量,系统可能直接被打满。留点余量,心里踏实。
QPS:最常用的性能标尺
QPS,每秒查询数。它其实是吞吐量的一种特例,专门针对查询场景。在互联网架构里,QPS几乎是出镜率最高的指标。
怎么算?很简单:
QPS = 总请求数 / 时间(秒)
举个例子:
1分钟处理了6000个请求
QPS = 6000 / 60 = 100
TP99:响应时间的「长尾」真相
TP99,意思是99%的请求响应时间都在这个值以内。比如TP99=200ms,说明99%的请求在200ms内完成,只有1%的请求超过200ms。
为什么看TP99而不是平均值?我举个例子:
- 100个请求,99个耗时10ms,1个耗时10s
- 平均值 = (99*10 + 10000) / 100 ≈ 109ms
- TP99 = 10s
平均值看起来还行,但TP99暴露了那个「慢请求」的存在。在线上,这1%的慢请求可能就是用户体验的致命伤。
知识体系一览
下面这张图,是我梳理的KPI核心关系。你看一眼就能明白它们之间的关联:
测量方法:别让数据骗了你
指标定义清楚了,怎么测?我分享几个实战经验:
- 响应时间:用APM工具(如SkyWalking、Pinpoint)做全链路追踪。别只测接口层,要深入到数据库、缓存、外部调用。
- 吞吐量:压测工具(如JMeter、wrk)配合监控,看系统在稳定状态下的最大处理能力。
- 并发用户数:通过业务日志统计「活跃session数」,或者用中间件(如Redis)记录在线状态。
- 资源利用率:用Prometheus + Grafana,采集CPU、内存、磁盘、网络等指标。
- QPS:在网关层(如Nginx、Kong)统计请求数,除以时间窗口。
- TP99:用HdrHistogram或Prometheus的histogram类型,计算分位值。
好了,这些KPI就是性能建模的「度量衡」。搞清楚了它们,你才能说「我的系统性能好不好」。下一节,咱们聊聊怎么用这些指标来指导架构设计决策。