Apache Bench — 壓力測試好夥伴
這篇文章寫於 2021 年,文中的工具與版本可能已經更新,實作時請以官方文件為準。
最近在測試 K8s 在大流量時 pod 的 auto scaling 機制,使用的工具是 Mac 本身內建 Apache Bench,這篇文章就來介紹它的基礎使用方式。

文章大綱
一、基礎操作
二、理解重要回傳資訊
三、使用 POST request
四、測試注意事項
一、基礎操作
下面是以 2 個連線數(c)建立 10 個 requests(n)來存取 Google 網址的範例。
ab -n 10 -c 2 https://www.google.com/
需要特別注意的是 request 數量不得低於連線數,否則會直接噴如下的錯誤:

通常來說,requests 數量會是連線數量的 100 倍。
二、理解重要回傳資訊
順利執行後會印出如下資訊,下面挑幾個重要資訊來做說明:

- 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 可以承受的負載,盡可能避免其他干擾因素。
留言載入中…