Apache 內建帶有一個 ab 指令,可以作為壓力測試使用。
用法:ab [options] [http[s]://]hostname[:port]/path 可用餐數: -n requests 要執行的請求數 -c concurrency 一次發出的多個請求的數量 -t timelimit 秒到最大值。花在基準測試上,這意味著 -n 50000 -s timeout 秒到最大值。等待每個響應,默認為 30 秒 -b windowsize TCP 發送/接收緩衝區的大小,以字節為單位 -B address 進行傳出連接時綁定的地址 -p postfile 包含要 POST 的數據的文件。還記得設置 -T -u putfile 包含要 PUT 的數據的文件。還記得設置 -T -T content-type 用於 POST/PUT 數據的內容類型標頭,例如: 'application//x-www-form-urlencoded',默認為"text/plain" -v verbosity 要打印多少故障排除信息 -w 在 HTML 表格中打印結果 -i 使用 HEAD 而不是 GET -x 屬性 要作為表屬性插入的字符串 -y 屬性字符串作為 tr 屬性插入 -z 屬性字符串作為 td 或 th 屬性插入 -C 屬性 添加 cookie,例如。 'Apache= 1234'(可重複) -H 屬性添加任意標題行,例如。 'Accept-Encoding:gzip' 在所有正常標題行之後插入。 (可重複) -A 屬性 添加 Basic WWW Authentication,屬性 是冒號分隔的用戶名和密碼。 -P 屬性 添加Basic Proxy Authentication,屬性 是冒號分隔的用戶名和密碼。 -X proxy:port 代理服務器和使用的端口號 -V 打印版本號並退出 -k 使用 HTTP KeepAlive 功能 -d 不顯示百分位數服務表 -S 不顯示置信度估計值和警告 -q 執行超過 150 個請求時不顯示進度 -l 接受可變文檔長度(用於動態頁面) -g filename 將收集到的數據輸出到 gnuplot 格式文件 -e filename 輸出帶有百分比的 CSV 文件 -r 不要在套接字接收錯誤時退出。 -m 方法 方法名稱 -h 顯示使用信息(此消息) -I 禁用 TLS 服務器名稱指示 (SNI) 擴展 -Z ciphersuite 指定 SSL/TLS 密碼套件(參見 openssl 密碼) -f protocol 指定 SSL/TLS 協議 (SSL2、TLS1、TLS1.1、TLS1.2 或 ALL) -E certfile 指定可選的客戶端證書鍊和私鑰
結果的部分會長的像是這樣:
Server Software: 主機使用的系統\軟體(nginx or apache 之類)和版本,通嘗是關閉的 Server Hostname: 網站的 Hostname ,網域名稱 Server Port: 連線的 port,大多是 443 或是 80 Server Temp Key: 連線時的臨時交換密鑰 TLS Server Name: TLS 連線的名稱 Document Path: 連線網頁路徑 Document Length: 連線網頁回應的檔案大小 Concurrency Level: 同時進行壓力測試的人數 Time taken for tests: 本次壓力測試所花費的總秒數 Complete requests: 完成的要求數(Requests) Failed requests: 失敗的要求數(Requests) Keep-Alive requests: Keep-Alive 的要求數 Total transferred: 本次壓力測試的總數據傳輸量(包括 HTTP Header 的資料也計算在內) HTML transferred: 本次壓力測試的總數據傳輸量(僅計算回傳的 HTML 的資料) Requests per second: 平均每秒回應要求數量 Time per request: 平均每個要求所花費的時間(注意單位是 ms, 豪秒) Time per request: 平均每個要求所花費的時間,跨所有同時連線數的平均值(注意單位是 ms, 豪秒) Transfer rate: 從 Client 端到 Web Server 之間的網路傳輸速度 Connection Times: 連線的時間統計,是一個二維表格,分別表示最小值\平均\中間值\最大值: Connect: Request 從 Client 端到 Web Server 的時間 Processing: 資料到 Web Server 後到 Response 結束( Response 全部下載完成)的時間 Waiting: 資料 Connect 狀態後,Client 端等待的時間,亦指 Client 送出 Request 後,一收到 Response 前等待的時間 Total: Connect + Processing 的時間,也就是從 Client 發出 Request 到 Response 全部下載完成的時間
要注意幾點:
- mac 默認是安裝的,但是在 mac 上使用會遇到版本或是數量上限的問題,可自行 google 修復
- 一般壓力測試不考慮頻寬,如果遠端測試的話會有頻寬限制(除非 server 端頻寬更低XD),建議是在同網段進行測試
- 壓力測試請由小至大,一次太大伺服器爆掉會有點麻煩。
參考資料:
使用 ApacheBench 進行網站的壓力測試 - The Will Will Web
The Will Will Web - 記載著 Will 在網路世界的學習心得與技術分享 -
指令-ab 壓力測試工具
OS: ubuntu-20.04 說明:ab 是一種用於對 Apache (HTTP) 服務器進行基準測試的工具。最主要是在讓您了解當前的 Apache 安裝方式執行。這尤其會顯示您的 Apache ...
分享 ApacheBench 的壓力測試結果報告分析心得 - The Will Will Web
The Will Will Web - 記載著 Will 在網路世界的學習心得與技術分享 -
如果想要在 windows 上操作(我沒做過),參考: