作為后端工程師,除了實現業務需求之外,需要考慮的就是自己寫的服務,在大并發下是否能正常運行了。但是,在一般開發情況下,沒那么多大并發情況讓你測試,那該怎么辦呢?
這時候,我們就可以用到Apache的壓力測試工具了,apache bench簡稱ab。
介紹
ab是apache自帶的壓力測試工具,ab是apache bench命令的縮寫。
當安裝完apache后,就可以在bin下面找到ab.exe然后進行apache 負載壓力測試。
ab命令會創建多個并發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基于URL的,因此,它既可以用來測試apache的負載壓力,也可以測試Nginx、lighthttp、Tomcat、IIS等其它Web服務器的壓力。
ab命令對發出負載的計算機要求很低,它既不會占用很高CPU,也不會占用很多內存。但是自己測試使用也需要注意,否則一次上太多的負載??赡茉斐赡繕朔掌髻Y源耗完,嚴重時甚至導致死機。
簡單使用
ab壓力測試工具使用非常簡單,只需一個命令即可。
示例:ab -n 200000 -c 20000 http://192.168.1.179/ >>d:1.html
-n:請求數
-c:并發數
上面的示例表示:每次并發20000個請求,總共請求200000次,并把結果輸出到指定文件里。
執行結果:
結果參數解釋
參數說明:
Document Length: 315 bytes HTTP響應數據的正文長度
Time taken for tests: 0.914 seconds 所有這些請求處理完成所花費的時間
Complete requests: 800 完成請求數
Failed requests: 0 失敗請求數
Total transferred: 393600 bytes 網絡總傳輸量
HTML transferred: 252000 bytes HTML內容傳輸量
Requests per second: 875.22 [#/sec] (mean) 吞吐量-每秒請求數
Time per request: 914.052 [ms] (mean) 服務器收到請求,響應頁面要花費的時間
Time per request: 1.143 [ms] (mean, across all concurrent requests) 并發的每個請求平均消耗時間
Transfer rate: 420.52 [Kbytes/sec] received 平均每秒網絡上的流量,可以幫助排除是否存在網絡流量過大導致響應時間延長的問題
網絡上消耗的時間的分解:
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.5 1 3
##連接的最小時間,平均值,中值,最大值
Processing: 245 534 125.2 570 682
Waiting: 11 386 189.1 409 669
Total: 246 535 125.0 571 684
整個場景中所有請求的響應情況。在場景中每個請求都有一個響應時間
其中 50% 的用戶響應時間小于 571 毫秒
80 % 的用戶響應時間小于 652 毫秒
最大的響應時間小于 684 毫秒