Linux入門實踐筆記(六)——壓力測試工具Apache Bench的安裝、使用和結果解讀
內容
本文介紹了壓力測試工具Apache Bench在Centos系統中的安裝,常用的測試指令,以及測試結果的解讀。
版本
作業系統: CentOS 7.2 64位
Apache Bench:2.3
說明
轉載請說明出處:Linux入門實踐筆記(六)——壓力測試工具Apache Bench的安裝、使用和結果解讀
步驟
Apache Bench的介紹
Apache Bench,簡稱ab,是Apache伺服器自帶的基準效能測試的工具。可用於壓力測試,用來測試系統的吞吐量、服務端請求平均處理時間、使用者請求平均等待時間等效能指標。
ab命令上手很簡單,通過ab命令可以建立併發執行緒模擬多使用者訪問或呼叫某一URL地址。ab命令的選項、輸出的介紹可以參考其
首先,我們介紹下ab檢測的效能指標:
吞吐量
吞吐量(Requests per second)是在某個併發度下伺服器每秒處理的請求數。它是伺服器併發處理能力的量化描述,單位是reqs/s。計算公式為:總請求數/處理請求的總耗時。 吞吐量越大說明伺服器的效能越好。
請求平均處理時間
請求平均處理時間(Time per request,across all concurrent requests)是伺服器處理請求的平均時間,計算公式為:處理請求的總耗時/總請求數。它是伺服器吞吐量的倒數。也等於,使用者請求平均等待時間/併發使用者數。
請求平均等待時間
請求平均等待時間(Time per request)是使用者等待請求響應的平均時間,計算公式為:處理請求的總耗時/(總請求數/併發使用者數)。
“請求平均處理時間”和“請求平均等待時間”兩個概念非常容易混淆,舉一個例子進行說明:比如100個使用者同時執行上傳文件的操作,那麼併發使用者數為100,假設伺服器可以同時處理這100個請求,並且每個檔案上傳操作的耗時都是1s。那麼請求總耗時時間為1s,吞吐量為100reqs/s。請求平均處理時間為0.01s,請求平均等待時間為1s。也就是說,請求平均處理時間是從伺服器的角度出發的,請求平均等待時間是從使用者的角度出發的。
Apache Bench的安裝
執行sudo yum -y install httpd-tools 安裝apache httpd的工具包,這個工具包中包含壓力測試工具Apache Bench。
#安裝apache httpd的工具包
[[email protected] ~]# yum install httpd-tools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-80.el7.centos.1 will be installed
--> Finished Dependency Resolution
#中間省略
Installed:
httpd-tools.x86_64 0:2.4.6-80.el7.centos.1
Complete!
執行命令ab -V,如果成功列印ab的版本資訊,則表明ab安裝成功。
#成功列印ab的版本資訊
[[email protected] ~]$ ab -V
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Apache Bench的使用和結果解讀
執行ab -n 100 -c 5 http://www.baidu.com/
,對百度進行ab測試。命令中的-n表示總共請求100次,-c表示併發使用者數為5,即使用5個併發執行緒同時請求。
注意,此處填寫的url不能只是域名,還要包含請求的路徑,如果請求根目錄,必須以"/"結尾。因此執行ab -n 100 -c 5 http://www.baidu.com
是不行的。
#使用5個併發執行緒,對百度進行100次請求。
[[email protected] ~]$ ab -n 100 -c 5 http://www.baidu.com/
#列印ab的版本資訊
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
#進行基準測試
Benchmarking www.baidu.com (be patient).....done
#測試結果
#HTTP伺服器資訊
Server Software: BWS/1.1
#伺服器域名
Server Hostname: www.baidu.com
#伺服器埠號
Server Port: 80
#請求資源的識別符號uri
Document Path: /
#第一次成功請求響應的頁面大小,如果後續請求響應的頁面大小發生變化,會認為請求出錯。
Document Length: 118155 bytes
#併發數
Concurrency Level: 5
#整個請求的總耗時
Time taken for tests: 1.244 seconds
#成功收到響應的請求數
Complete requests: 100
#失敗請求數,失敗包括連線,讀取,不正確的內容長度或異常4種情況。
Failed requests: 98
(Connect: 0, Receive: 0, Length: 98, Exceptions: 0)
#寫入錯誤數
Write errors: 0
#測試過程從伺服器接收到的資料總量(包含Header資訊)
Total transferred: 11968154 bytes
#測試過程從伺服器接收到的HTML頁面的大小(不包含Hreader資訊)
HTML transferred: 11872694 bytes
#伺服器的吞吐量:平均每秒處理的請求數
Requests per second: 80.39 [#/sec] (mean)
#???
Time per request: 62.197 [ms] (mean)
#請求的平均處理時間,是伺服器吞吐量的倒數
Time per request: 12.439 [ms] (mean, across all concurrent requests)
#每秒資料流量的大小
Transfer rate: 9395.67 [Kbytes/sec] received
#連線耗時
Connection Times (ms)
#最小 平均 最大
min mean[+/-sd] median max
Connect: 6 10 5.3 7 34
Processing: 23 43 44.7 29 390
Waiting: 9 14 5.7 11 32
Total: 29 53 47.0 37 408
#特定耗時的請求數佔比
Percentage of the requests served within a certain time (ms)
50% 37 #50%的請求在37ms以內
66% 55
75% 60
80% 63
90% 76
95% 102
98% 273
99% 408 #99%的請求在408ms以內
100% 408 (longest request)