下载ab工具
- 进入apache官网 httpd.apache.org/ 下载apache即可(mac有自带哦)
测试命令
- ab -n 100 -c 10 "test.com/"
- -n表示请求数,-c表示并发数
结果示例
测试的页面
Document Path:
页面大小
Document Length:
测试的并发数
Concurrency Level:
整个测试持续的时间
Time taken for tests:
完成的请求数量
Complete requests:
失败的请求数量
Failed requests: 0
整个过程中的网络传输量
Total transferred: 204586997 bytes
整个过程中的HTML内容传输量
HTML transferred: 203479961 bytes
最重要的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值
Requests per second: 337.67 #/sec
最重要的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值
Time per request: 2961.449 ms
每个连接请求实际运行时间的平均值
Time per request: 2.961 [ms] (mean, across all concurrent requests)
平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Transfer rate: 16866.07 [Kbytes/sec] received
网络上消耗的时间的分解,各项数据的具体算法还不是很清楚
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 483 1773.5 11 9052
Processing: 2 556 1459.1 255 11763
Waiting: 1 515 1459.8 220 11756
Total: 139 1039 2296.6 275 11843
整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于275毫秒,66%的用户响应时间小于298毫秒,最大的响应时间小于11843毫秒。对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数。
Percentage of the requests served within a certain time (ms)
50% 275
66% 298
75% 328
80% 373
90% 3260
95% 9075
98% 9267
99% 11713
100% 11843 (longest request)
几个关于压力测试的概念
吞吐率(Requests per second)
- 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。 计算公式:总请求数 / 处理完成这些请求数所花费的时间,即 Request per second = Complete requests / Time taken for tests
并发连接数(The number of concurrent connections)
- 概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
并发用户数(The number of concurrent users,Concurrency Level)
- 概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
用户平均请求等待时间(Time per request)
- 计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即 Time per request = Time taken for tests /( Complete requests / Concurrency Level)
服务器平均请求等待时间(Time per request: across all concurrent requests)
- 计算公式:处理完成所有请求数所花费的时间 / 总请求数,即 Time taken for / testsComplete requests 可以看到,它是吞吐率的倒数。 同时,它也=用户平均请求等待时间/并发用户数,即 Time per request / Concurrency Level