一、简介:
介绍:
apache自带的apache Benchmark工具可以用来做压力测试。
文件位置:
Apache安装目录/bin/ab.exe
查看版本:
ab -V可以查看当前ab的版本
二、使用
用处:
可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问
常用命令:
ab [可选的参数选项] 需要进行压力测试的url
例如:ab -c 500 -n 1000 url:端口/path
-c+测试的并发线程数(500个用户并发),-n总共发起的请求数(总共访问1000次)
三、结果解析
1. 比较重要的指标是
Requests per second: 122.12 [#/sec] (mean)
相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值
Time per request: 8188.731 [ms] (mean)
相当于 LR 中的 平均事务响应时间
2. 最后的百分比代表整个场景中所有请求的响应情况,其中50%的用户请求响应时间在269ms内,以此类推。
四、附录:参数一览
-n即requests,用于指定压力测试总共的执行次数。
-c即concurrency,用于指定压力测试的并发数。
-t即timelimit,等待响应的最大时间(单位:秒)。
-b即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v即verbosity,指定打印帮助信息的冗余级别。
-w以HTML表格形式打印结果。
-i使用HEAD请求代替GET请求。
-x插入字符串作为table标签的属性。
-y插入字符串作为tr标签的属性。
-z插入字符串作为td标签的属性。
-C添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
-H添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-X指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。
-V打印版本号并退出。
-k使用HTTP的KeepAlive特性。
使用HTTP的KeepAlive特性。
-k使用HTTP的KeepAlive特性。
-d不显示百分比。
-S不显示预估和警告信息。
-g输出结果信息到gnuplot格式的文件中。
-e输出结果信息到CSV格式的文件中。
-r指定接收到错误信息时不退出程序。
-h显示用法信息,其实就是ab -help。
--------------------- 作者:NNnora 来源:CSDN 原文:https://blog.csdn.net/NNnora/article/details/80529657?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!
性能测试得到的最重要的指标就是QPS(Requests per second),反映了接口的并发承受能力,也就是系统的峰值性能。如果对接口的调用超过了这一限制,就要考虑提升硬件或者做一些优化了。
下面具体解释下各个参数的含义:
- Server Software: Web主機的作業系統與版本(若Web主機設定關閉此資訊則無);在此例中就是压力测试的对象nginx
- Server Hostname: Web主機的IP位址(Hostname)
- Server Port: Web主機的連接埠(Port)
- Document Path: 測試網址的路徑部分
- Document Length: 測試網頁回應的網頁大小
- Concurrency Level: 同時進行壓力測試的人數
- Time taken for tests: 本次壓力測試所花費的總秒數 ;此次压力测试花费的世间
- Complete requests: 完成的要求數(Requests)
- Failed requests: 失敗的要求數(Requests)
- Write errors: 寫入失敗的數量
- Total transferred: 本次壓力測試的總數據傳輸量(包括 HTTP Header 的資料也計算在內)
- HTML transferred: 本次壓力測試的總數據傳輸量(僅計算回傳的 HTML 的資料)
- Requests per second: 平均每秒可回應多少要求 ;是否可以认为是QPS
- Time per request: 平均每個要求所花費的時間(單位: 豪秒) ;每次并发请求时间(所有并发)
- Time per request: 平均每個要求所花費的時間,跨所有同時連線數的平均值(單位: 豪秒) ;每一次请求时间(并发平均)
- Transfer rate: 從 ab 到 Web Server 之間的網路傳輸速度
最後的 Connection Times (ms) 指的是壓力測試時的連線處理時間:
橫軸欄位的部分:
- min: 最小值
- mean: 平均值(正、負標準差)
- median: 平均值(中間值)
- max: 最大值
縱軸欄位的部分:
- Connect: 從 ab 發出 TCP 要求到 Web 主機所花費的建立時間。
- Processing: 從 TCP 連線建立後,直到 HTTP 回應(Response)的資料全部都收到所花的時間。
- Waiting: 從發送 HTTP 要求完後,到 HTTP 回應(Response)第一個 Byte 所等待的時間。
- Total: 等於 Connect + Processing 的時間(因為 Waiting 包含在 Processing 時間內了)
壓力測試的基本觀念
- 排除頻寬的限制
- 做壓力測試通常不會考量「頻寬的限制」,所以一般來說不會將測試的主機擺在遠端機房、然後測試程式擺在公司內部的主機,而是會將壓力測試的 Client 跟 Web 主機擺在同一個網段下進行壓力測試。
- 因為「頻寬」只要花錢就會有了,但是主機的承載量卻是有限的,從遠端進行壓力測試主要的限制是在「頻寬」而非「效能」,所以從遠端單點進行壓力測試毫無任何意義可言,這樣是測不出主機的效能極限的。
- 如果你有能力與資源進行大規模(多點)壓力測試的話,透過遠端進行壓力測試才有意義。
- 壓力要循序漸進
- 你不要一下字就執行同時連線數 100 人,而是要循序漸進的慢慢加同時連線數上去,才不會讓 Web Application 一下字承受過大的負載而導致效能的數據不正確(例如說 Failed requests 過高),但這只是建議,你也可以一下子操死你的主機,反正你在測主機的極限嘛!
--------------------- 作者:一座青山 来源:CSDN 原文:https://blog.csdn.net/sangyongjia/article/details/49093945?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!