压力测试核心指标:别被数字忽悠了

做压力测试,说白了就是给系统“找茬”。你得知道看哪些数据,才能判断它到底行不行。我见过不少团队,跑了一堆测试,最后拿出的报告全是数字,但没一个说到点子上。

这一章,咱们就把最关键的几个概念掰开揉碎。你把这些搞懂了,后面调优才有方向。

并发数:到底多少人同时在线?

并发数,指的是同一时刻,系统正在处理的请求数量。注意,不是“注册用户数”,也不是“每秒请求数”。

我遇到过有人把公司注册用户100万直接当成并发数来压测,结果机器直接崩了。你想想看,100万人怎么可能同时给你发请求?

关键区别:
  • 在线用户数:连上服务器,但可能啥也没干。
  • 并发用户数:正在发请求、等返回的,才是压力来源。

HSM SDK的场景更特殊。HSM是硬件,它内部有并发通道限制。比如一个HSM只能同时处理32个加密请求,你压100个并发,其中68个就得排队。不是SDK不行,是硬件瓶颈到了。

经验之谈:压测HSM SDK时,并发数建议从1开始,慢慢往上加。每次加10%,观察哪个点开始性能下降。那个临界值,就是系统的“软上限”。

吞吐量:单位时间能干多少活

吞吐量,指的是系统在单位时间内成功处理的请求数。常用单位是“请求/秒”或“操作/秒”。

我习惯把吞吐量看作“水管的流量”。管子粗,流过去的水就多。但水压不够(响应时间慢),流量也上不去。

场景 吞吐量指标 说明
HSM签名 签名数/秒 每秒能签多少个数据块
密钥生成 密钥对/秒 每秒能生成几对RSA或ECC密钥
加密解密 MB/s 大文件加密时的数据吞吐速率

记得有一次,客户抱怨他们的HSM性能不够。我一查,他们压测时用的全是1024位RSA密钥。换成2048位后,吞吐量直接腰斩。这不叫性能差,这叫用错场景测错了指标。

响应时间:点一下等多久

响应时间,就是从发出请求到收到完整响应之间的时间间隔。单位通常是毫秒。

避坑指南:我曾经踩过一个坑——只看平均响应时间。结果95%的请求都在50ms内返回,但剩下5%拖到了2000ms。平均一看才150ms,还挺美。但实际上那5%的用户已经在骂娘了。

正确的做法是看“百分位响应时间”:

  • P50:一半请求比这个快。
  • P95:95%的请求比这个快——这才是用户体验的底线。
  • P99:1%的慢请求,通常需要重点排查。

HSM SDK的响应时间由三部分构成:网络传输 + SDK处理 + HSM执行。哪一块慢了,都能直接体现出来。

QPS 与 TPS:一个侧重请求,一个侧重事务

这两个概念容易混。我简单说一下:

  • QPS(Query Per Second):每秒查询数。侧重读操作,比如查一个证书状态。
  • TPS(Transaction Per Second):每秒事务数。一个事务可能包含多次请求,比如“登录->获取令牌->签名->退出”算一个完整事务。

对于HSM SDK,你用什么取决于业务场景:

场景 推荐指标 原因
纯签名/验签 QPS 每次请求就是一个独立操作
TLS握手 TPS 一次握手包含多次HSM交互
密钥生命周期管理 TPS 生成、分发、销毁算一个完整流程
我的习惯:压测报告里,QPS和TPS我都会写。但跟老板汇报时,我只看TPS——因为那代表用户真正感知到的“完成一笔业务”的速度。

资源利用率:别把硬件跑冒烟了

资源利用率,说的是CPU、内存、网络、磁盘I/O被用了多少。但HSM SDK特殊在——它依赖硬件安全模块,所以还得关注HSM本身的利用率。

我在项目中遇到过一件事。压测时CPU才跑30%,但HSM已经100%了。客户说“机器这么闲,为啥不继续加压?”我告诉他们:HSM是瓶颈。你再加压,请求都得排队,响应时间反而更差。

记住:压测不是把所有资源都跑到100%就算赢。你得找到那个“平衡点”:吞吐量最高,响应时间还能接受,关键资源没打满。

HSM的资源利用率通常要看:

  • HSM内部通道占用:比如32通道用了30个,接近饱和。
  • HSM内存/密钥槽占用:密钥加载太多,会拖慢查找速度。
  • PCIe带宽占用:如果HSM是PCIe卡,数据吞吐量受总线限制。

它们之间的关系:一个综合公式

这几个指标不是孤立的。它们之间的关系,我习惯用一个公式来理解:

吞吐量 ≈ 并发数 / 平均响应时间

为什么是“≈”?因为系统有损耗,有排队,有锁竞争。你想想看,并发数增加一倍,响应时间往往会变长,所以吞吐量不会线性翻倍。

下面这张图,是我用来跟团队讲“压力测试核心指标关系”的,你拿去直接用:

压力测试核心指标关系图 压力测试核心指标关系图 并发数 响应时间 吞吐量 QPS / TPS 资源利用率 核心公式: 吞吐量 ≈ 并发数 / 平均响应时间 实际会受锁竞争、HSM通道限制、网络延迟影响,但这个公式是最直观的理解方式。 决定业务容量 找到硬件瓶颈

综合示例:一个真实的压测复盘

我拿之前调一个PKCS#11 SDK的例子来说。客户要求:并发32,吞吐量不低于1000签名/秒,P95响应时间不超过100ms。

第一轮压测结果:

  • 并发32,吞吐量只有650签名/秒。
  • P95响应时间:180ms。
  • HSM通道利用率:100%(32个通道全满)。
  • SDK所在机器CPU:45%。

问题在哪?看资源利用率就明白了。HSM已经打满了,SDK和CPU都在等它。不是SDK慢,是HSM到了极限。

怎么解决?客户换了更高规格的HSM(支持64通道),再次压测:

指标 HSM-32通道 HSM-64通道
并发数 32 32
吞吐量(签名/秒) 650 1280
P95响应时间(ms) 180 55
HSM通道利用率 100% 50%

你看,并发数和测试脚本完全没变,只是换了个更强的HSM,所有指标全达标了。这就是资源利用率的价值——帮你一眼锁定瓶颈在哪。

一个小建议:压测时,每5秒钟记录一次HSM通道利用率和SDK的CPU占用。画成时间序列图。你能看到资源是怎么“被吃掉的”,哪个点在请求排队,一目了然。

这几个概念是地基。下一层,我们要把这些数字变成可执行的测试场景。嗯,那都是后话了。