在编写软件的时候我们都会对自己的代码做单元测试,部分代码功能可能还需要做基准测试来比对不同的代码实现的性能差异性。对于整个项目开发完成之后,例如 Web Service 项目还要对其进行整体并发请求压力测试,能做该测试的软件也很多,例如带图形化界面的 Apache Jmeter,但是只能在用桌面环境操作系统上使用。还有一个同属于 Apache 软件基金会的 Apache Bench,即 ab 工具,是 Apache 提供的用来对 HTTP Web 服务器进行性能测试的工具。ab 命令不仅可以对传统的 Apache Web 服务器进行性能测试,也可以对其他的 Web 服务器进行性能测试,在终端环境下使用起来十分方便。
安装 AB
在 Linux 和 MacOS 下都可以安装,通过什么样的方式安装取决于自己的软件包管理工具,RHEL9 中软件包为 DNF 可以使用 YUM 进行安装:
yum install -y httpd-tools
安装完成之后,默认使用 ab 命令就可以调用程序,使用文档可以查看官方编写的 https://httpd.apache.org/docs/2.4/programs/ab.html 。
Web Benchmark
ab 命令对 Web 程序进行压力测试使用起来十分简单,例如向 http://127.0.0.1:8080 接口发送 1000 次请求,请求的同时间段并发为 100 :
ab -n 1000 -c 100 http://127.0.0.1:8080
期结果会输出包含:
- Complete requests: 成功获取返回的请求数量
- Concurrency Level: 测试中使用并发客户端数量,即并发数
- Time taken for tests: 处理完成所有请求的时间
- Requests per second: 每秒处理请求的数量,即(请求数量 / 处理时间)的值
- Time per request: 每个请求的平均处理时间
存在两个值: 第一个值:并发数 * 处理时间 * 1000 / 总请求数量
,第二个值:处理时间 * 1000 / 总请求数量
,例如第一个 Time per request :
10 * 0.642 * 1000 / 10000 = 0.642 (ms)
第二个 Time per request:
0.642 * 1000 / 10000 = 0.064 (ms)
从这些指标可以综合反映了当前 Web 服务器的性能情况,这种这里针对个人网站或者对并发要求不高的网站,如果要更专业的测试可以使用企业服务的测试平台 gatting.io 。