Apache Bench — 壓力測試好夥伴

這篇文章寫於 2021 年,文中的工具與版本可能已經更新,實作時請以官方文件為準。

本文目錄
  1. 一、基礎操作
  2. 二、理解重要回傳資訊
  3. 三、使用 POST request
  4. 四、測試注意事項

最近在測試 K8s 在大流量時 pod 的 auto scaling 機制,使用的工具是 Mac 本身內建 Apache Bench,這篇文章就來介紹它的基礎使用方式。

Apache Bench — 壓力測試好夥伴(圖 1)

文章大綱
一、基礎操作
二、理解重要回傳資訊
三、使用 POST request
四、測試注意事項

一、基礎操作

下面是以 2 個連線數(c)建立 10 個 requests(n)來存取 Google 網址的範例。

ab -n 10 -c 2 https://www.google.com/

需要特別注意的是 request 數量不得低於連線數,否則會直接噴如下的錯誤:

一、基礎操作(圖 2)

通常來說,requests 數量會是連線數量的 100 倍。


二、理解重要回傳資訊

順利執行後會印出如下資訊,下面挑幾個重要資訊來做說明:

二、理解重要回傳資訊(圖 3)

  • Concurrency Level:我們設定的連線量。
  • Failed requests/Complete requests:我們需要知道在壓力測試時失敗的百分比。
  • Requests per second:平均每秒可回應的 Request 數量。
  • Time per request:平均每個 Request 的時間。
  • Connection Times (ms):可以從這裡觀察連線的狀況。

三、使用 POST request

有時會需要用 POST 傳送參數以及在 Header 帶入 Token 資訊,下面提供一個簡單範例:

ab -n 10000 -c 100 -p post.txt -T application/json -H 'Authorization: Token your_token' https://your_test_ip/
  • -p:這個是要傳送 data 的文檔路徑。
  • -T:傳送資料時的 Header 的 Content-type。
  • -H:放在 Header 的資訊。

post.txt 裡面只需要以 json 格式呈現即可:

{
  "username":"baobao",
  "password":"baobaoverycute",
  "action":"login"
}

四、測試注意事項

  • 連線量請不要一開始就 100 個,請由小而大遞增;否則最後的測試數據可能不準確。
  • 測試時請將 Server 與 Client 放在相同的網域;若不同網域來做測試就可能會受到頻寬影響。
  • 測試主要是為了確認 Server 可以承受的負載,盡可能避免其他干擾因素。
Talk

留言討論

留言載入中…