Mac下的Web性能壓力測試工具:ab(ApacheBench)

Web開發,少不了的就是壓力測試,它是評估一個產品是否合格上線的基本標準。html

ab是一種用於測試Apache超文本傳輸協議(HTTP)服務器的工具。apache自帶ab工具,能夠測試Apache、IIS、Tomcat、Nginx等Web服務器,由於apache是跨平臺的,因此在Mac、Linux、Windows等系統下,只要安裝了apache就能使用ab工具。web

Ubuntu系統安裝測試工具:sudo apt-get install apache2-utilsapache

CentOS系統安裝測試工具:yum -y install httpd-tools服務器

Windows系統Apache下載地址:https://www.apachehaus.com/cgi-bin/download.plx併發

mac自帶的apache中的ab是有最大併發限制的,您能夠從新下載一個apache而且編譯(能夠參考這篇文章),安裝以前記得卸載原來的哦。

ab是非圖形化的併發測試工具,沒有Jmeter、Loadrunner那樣有各類場景設計、各類圖形報告和監控,只需一個命令便可,有輸出描述,能夠簡單的進行一些壓力測試。固然,您也能夠選擇webbench、siege、http_load、Load impact、阿里雲PTS等工具進行很方便的測試。工具

Mac下自帶apache,查看版本:性能

apachectl -v
Server version: Apache/2.4.34 (Unix)
Server built: Feb 22 2019 20:20:11

查看ab版本:測試

ab -V

ab壓力測試工具的用法,查看:ui

ab --help
或者
man ab
# 按Ctrl+z組合鍵,或者按q鍵退出

例如:阿里雲

ab -c 併發數 -n 請求數 URL

ab工具經常使用參數:
-n :總共的請求執行數,缺省是1;
-c: 併發數,缺省是1;
-t:測試所進行的總時間,秒爲單位,缺省50000s
-p:POST時的數據文件
-w: 以HTML表的格式輸出結果

ab -n 100 -c 10 -w http://www.baidu.com/ >> baidu.html
# 結果界面和下面例子是同樣的,只是以html文件形式保存而已。

下面,咱們以請求百度爲例:

ab -n 100 -c 10 https://www.baidu.com/

下面是運行結果:

 // apache版本信息
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
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
// 請求返回header類型
Server Software: BWS/1.1
// 請求ip或者域名
Server Hostname: www.baidu.com
// 請求端口,當前請求爲https因此端口爲443,請求https端口80
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
TLS Server Name: www.baidu.com
Document Path: /
// 第一個成功返回的文檔的字節大小
Document Length: 227 bytes
// 併發數
Concurrency Level: 10
// 從創建鏈接到最後接受完成總時間
Time taken for tests: 1.407 seconds
// 完成請求數
Complete requests: 100
// 失敗請求數
Failed requests: 0
// 從服務器接收的字節總數
Total transferred: 89300 bytes
// HTML接收字節數,減去了Total transferred中HTTP響應數據中的頭信息的長度
HTML transferred: 22700 bytes
// 吞吐率:每秒請求數(總請求數/總時間,至關於LR中的每秒事務數TPS)
Requests per second: 71.07【#/sec】(mean)
// 用戶平均請求等待時間
Time per request: 140.709【ms】(mean)
// 服務器處理每一個請求平均響應時間,mean表示爲平均值
Time per request: 14.071 [ms] (mean, across all concurrent requests)
// 這些請求在單位時間內從服務器獲取的數據長度
// 計算公式:Total trnasferred/ Time taken for tests
Transfer rate: 61.98 [Kbytes/sec] received
// 鏈接消耗時間分解
Connection Times (ms)
min mean[+/-sd] median max
最小值 平均值 標準差 中間值 最大值
Connect: 60 92 16.6 93 167
Processing: 18 32 11.2 30 97
Waiting: 18 30 9.9 30 97
Total: 77 124 21.4 122 208
// 按完成請求的百分比,得出完成請求中花費時間最長的那一個請求的時間,也就是這些請求完成時間的最大值(毫秒)
Percentage of the requests served within a certain time (ms)
// 50%請求完成時間的最大值是122毫秒
50% 122
66% 130
75% 139
80% 140
// 90%請求完成時間的最大值是148毫秒
90% 148
95% 164
98% 182
99% 208
// 100%請求完成時間的最大值是208毫秒(最長請求)
100% 208 (longest request)

ab性能指標

在進行性能測試過程當中有幾個指標比較重要。

一、吞吐率(Requests per second)

服務器併發處理能力的量化描述,單位是reqs/s,指的是在某個併發用戶數下單位時間內處理的請求數。某個併發用戶數下單位時間內能處理的最大請求數,稱之爲最大吞吐率。
記住:吞吐率是基於併發用戶數的。這句話表明了兩個含義:
a、吞吐率和併發用戶數相關;
b、不一樣的併發用戶數下,吞吐率通常是不一樣的。
計算公式:總請求數/處理完成這些請求數所花費的時間,即:
Request per second=Complete requests/Time taken for tests
必需要說明的是,這個數值表示當前機器的總體性能,值越大越好。

二、併發鏈接數(The number of concurrent connections)

併發鏈接數指的是某個時刻服務器所接受的請求數目,簡單的講,就是一個會話。

三、併發用戶數(Concurrency Level)

要注意區分這個概念和併發鏈接數之間的區別,一個用戶可能同時會產生多個會話,也即鏈接數。在HTTP/1.1下,IE7支持兩個併發鏈接,IE8支持6個併發鏈接,FireFox3支持4個併發鏈接,因此相應的,咱們的併發用戶數就得除以這個基數。

四、用戶平均請求等待時間(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。

原文轉載:https://xushanxiang.com/2019/10/mac-web-ab.html

相關文章
相關標籤/搜索