標籤: ApacheBench

  • MacOS 使用 Apache JMester 來做壓力測試

    MacOS 使用 Apache JMester 來做壓力測試

    之前有一篇使用 ApacheBench 來做壓力測試的工具(參考),最近發現一個 GUI 的工具, Mac 和 Windows 都可以用,讚讚。

    照例除了附上操作說明連結,補上自己的注意事項和心得:

    1. 記得要裝 Java 8
    2. 在 MacOS 上,推薦從官網上下載 bin 檔案,用 brew 安裝有點麻煩(我安裝失敗了)
    3. 可以切換繁體中文(從上方 TopBar 點擊 “選項” -> “選擇一種語言” -> “Chinese (Traditional)” ),可是有些專有名詞可能要熟悉一下。
    4. 不得不說,GUI 的缺點就是要點點點,但是不用記住一堆指令,可惜他不是 app 形式製作的,執行檔案要保存好,連結做滿。
    5. 測試模版可以儲存(執行前會詢問),這滿方便的,許多創造一套 API 規則打天下,或是使用 wordpress 這類固定 Web App 的,很適合創建一些模版來用。

    另外補上一些壓力測試要注意的事情,權當壓測前的 check list:

    首先確認測試目標,如果是服務的本身的話,要記得確認流量不會經過服務前方的 CDN 或是防禦工具(e.g. Cloudflare 或是服務商提供的防禦機器)。操作上可以嘗試使用內網、修改 host 指定 IP,或是把防禦工具關閉(例如調整 nginx 或是關閉防火強);而如果是為了要測試防禦工具的話,得先確認是不是要和工具的服務商確認一下,如果是 SaaS 服務,通常會有延伸費用的。

    操作時,務必注意 header 中的操作,像是 token 或是 cookie 驗證,這次簡單測試沒有特別處理,不過通常需要登入的服務都會需要確認調整的。別壓力測試一堆結果都是導向 login 頁面,那就搞笑啦!

    除了內網測試,如果像是 wordpress 這類單體的 web application 外網測試也是需要的,畢竟外網才是正常一般使用者進入的環境。

    補一下程式截圖

    附上連結,這是下載的官網:

    使用 Mac 的安裝說明:

    我們的目標是測試 API ,這是使用說明(使用比較舊的版本,有些操作不太一樣):

    附上 DDos 的防禦策略介紹:

  • 壓力測試 – ab(ApacheBench)指令的操作與結果說明

    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 全部下載完成的時間
    

    要注意幾點:

    1. mac 默認是安裝的,但是在 mac 上使用會遇到版本或是數量上限的問題,可自行 google 修復
    2. 一般壓力測試不考慮頻寬,如果遠端測試的話會有頻寬限制(除非 server 端頻寬更低XD),建議是在同網段進行測試
    3. 壓力測試請由小至大,一次太大伺服器爆掉會有點麻煩。

    參考資料:

    使用 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 上操作(我沒做過),參考: