ApacheBench 是一個極為輕量級的壓力測試工具,通常只要電腦有安裝 Apache 伺服器就會有這個工具。ApacheBench 僅能測試一個網頁所能承受的負載能力,並無法模擬真正使用者操作網站的複雜動作。儘管如此,ApacheBench 測試所提供的數據還是非常值得參考的,重點是它非常簡單好學。

ApacheBench 小檔案

軟體名稱:ApacheBench
軟體性質:免費
官網說明[詳細說明]

指令說明

ApacheBench 預設路徑為:

作業系統 位置
Windows [Apache 安裝目錄]\bin\
Linux /usr/bin/

如果環境變數有設定好可直接輸入以下指令看看電腦是否有安裝 ApacheBench 工具,如果沒有請先切換到上面說明的路徑之後再輸入以下指令看看。

            
                $ ab -h
            
        

有安裝的話應該會出現如下畫面。

上圖是 ApacheBench 完整的參數說明,以下說明常用的參數供大家參考。

            
                指令:ab
                -k      // 使用 KeepAlive 連線
                -c      // 同時連線數量
                -n      // 整個壓力測試的 Request 數量
            
        

數據解讀

現在我們模擬 100 個人同時連入 http://127.0.0.1/,全部產生 500 個 Request,輸入以下指令即可。

            
                $ ab -k -c 100 -n 500 http://127.0.0.1/
            
        

等待 1~2 秒鐘應該就可以跑完了,底下是這次壓力測試的數據,主要我們可以觀看以下幾個指標:

指標名稱 說明
Complete requests 完成的 Request 次數
Failed requests 失敗的 Request 次數
Requests per second 每秒能處理的 Request (越大越好)
Time per request 單獨完成一個 Request 的時間(越短越好)
Connection Times
--Connect client 發出 Request 到 server 收到的時間
--Processing server 收到 Request 到 server Response 的時間
--Waiting client 發出 Request 到 client 收到 Response 的時間
--Total Connect + Processing

雖然 ApacheBench 只可以模擬單一網頁的負載量,但我還是很常使用這個工具,實際上我會使用它來調整伺服器的網路負載,因為它可以在短時間內讓我知道我調整的參數是否有效,然後模擬複雜動作的操作則是使用 Apache JMeter 來達成。另外我在使用 ApacheBench 的時候有時候會發生 Failed requests 數量極高 (高達 95% 以上都失敗),後來找了半天才發現在短時間內使用 ApacheBench 有時候 Request 會送不出去,所以大家在使用時可以順便觀看一下網路流量,如果流量很低的話,這次的壓力測試數據就不是那麼值得參考了。