常用性能指标
- HPS(Hits Per Second) :每秒点击次数,单位是次/秒。
- TPS(Transaction Per Second):系统每秒处理交易数,单位是笔/秒。
- QPS(Query Per Second):系统每秒处理查询次数,单位是次/秒。对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS=HPS=RPS,一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器点击请求.
- RPS(Requests Per Second):每秒请求数,这里还有两个我们通常认为和RPS相等的名词,arrival rate、TPS。
- 并发数:系统同时处理的request/事务数
- 响应时间:一般取平均响应时间
- QPS(TPS):并发数/平均响应时间
性能工具对比:
LoadRunner | Jmeter | Locust | |
授权方式 | 商业收费 | 开源免费 | 开源免费 |
开发语言 | C/Java | Java | Python |
测试脚本形式 | C/Java | GUI | Python |
并发机制 | 进程/线程 | 线程 | 协程 |
单机并发能力 | 低 | 低 | 高 |
分布式压力 | 支持 | 支持 | 支持 |
资源监控 | 支持 | 不支持 | 不支持 |
报告与分析 | 完善 | 简单图标 | 简单图标 |
支持二次开发 | 不支持 | 支持 | 支持 |
LoadRunner 是非常有名的商业性能测试工具,功能非常强大。使用也比较复杂,目前大多介绍性能测试的书籍都以该工具为基础,甚至有些书整本都在介绍 LoadRunner 的使用。
Jmeter 同样是非常有名的开源性能测试工具,功能也很完善,在本书中介绍了它作为接口测试工具的使用。但实际上,它是一个标准的性能测试工具。关于Jmeter相关的资料也非常丰富,它的官方文档也很完善。
Locust 同样是性能测试工具,虽然官方这样来描述它 “An open source load testing tool.” 。但其它和前面两个工具有着较大的不同。相比前面两个工具,功能上要差上不少,但它也并非优点全无。
-
Locust 完全基本 Python 编程语言,采用 Pure Python 描述测试脚本,并且 HTTP 请求完全基于 Requests 库。除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。
-
LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力。
正是基于这样的特点,使我选择使用Locust工具来做性能测试,另外一个原因是它可以让我们换一种方式认识性能测试,可能更容易看清性能测试的本质。