最近在測試 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 可以承受的負載,盡可能避免其他干擾因素。
▶︎ 如果這篇文章有幫助到你1. 可以點擊下方「Follow」來追蹤我~
2. 可以對文章拍手讓我知道 👏🏻你們的追蹤與鼓勵是我繼續寫作的動力 🙏🏼▶︎ 如果你對工程師的職涯感到迷茫1. 也許我在iT邦幫忙發表的系列文可以給你不一樣的觀點 💡
2. 也歡迎您到書局選購支持,透過豐富的案例來重新檢視自己的職涯