我們先前的例子都是透過 CPU 使用率來決定擴展策略,但是流量一直都是比較直覺的判斷方式,因為流量是使用者使用應用程式次數的一個特徵,今天要做的就是如何來產生我們想要的流量,以及透過CloudWatch來觀察。
Jmeter 是 Apache 開源專案,使用Java開發的測試工具,主要用來做功能測試和性能測試(壓力測試/負載測試),我們將會用它來進行流量的產生。
千萬要記得安裝的目錄,如果下一個動作沒成功的話,可以手動設定環境變數,把Java的路徑直接加到環境變數中
PATH= ....;C:\Program Files\Java\jdk-14.0.2\bin
JAVA_HOME = C:\Program Files\Java\jdk-14.0.2
圖 1、透過控制台直接設定 Java 環境
下載壓縮檔,解壓縮完直接執行 ./bin/jmeter.bat ,Jmeter 是支援中文的, 啟動Jmeter 後, 點擊 Options -> Choose Language 來選擇語言。
圖 2、 Apache Jmeter官方網站下載壓縮檔
圖 3、 Jmeter 改變語言設定
我們的目標是在特定的時間產生指定的流量,比方說,在 60 秒內產生 1000 次的網頁讀取
測試目標: ithomealb-1480018609.ap-southeast-1.elb.amazonaws.com (由 AWS ELB 所提供)
模擬使用者: 10 個使用者
請求頻率: 1,000/minute
步驟 1. 新建 Thread Group
jmeter 的所有任務都由執行緒來進行,所有任務都必須在執行緒組下面創建,在 AWS Test Plan 按左鍵。
圖 4、 新建 Thread Group
執行緒數量 Number of Threads: 一個用戶占一個執行緒, 10 個執行緒就是模擬 10 個用戶
準備時長 Ramp-Up Period(in seconds): 設置執行緒需要多長時間全部啟動。如果執行緒數為 10 ,準備時長為 10 ,那麼需要1秒鐘啟動 1 個執行緒。
Loop Count: 每個執行緒發送請求的次數。如果執行緒數為 10 ,迴圈次數為 10 ,那麼每個執行緒發送10次請求。總請求數為 10*10 = 100 。如果勾選了“永遠”,那麼所有執行緒會一直發送請求,直到選擇停止運行腳本。
圖 5、 設定 Thread Group
步驟 2. 新增 HTTP Request
我們是測試網頁所以要建立 HTTP Request,在 執行緒群組1000 按左鍵,新增 > 取樣 > HTTP要求。
圖 6、 新增 HTTP Request
協定: HTTP
主機: ithomealb-1480018609.ap-southeast-1.elb.amazonaws.com
圖 7、 設定 HTTP Request
步驟 3. 新增計時器
設定在固定時間內發出特定數量的請求,在 執行緒群組1000 按左鍵,新增 > 計時器 > 固定時隔。
圖 8、 新增計時器
固定處理量計時器 Constant Throughput Timer:通過計算使總處理量(以每分鐘計)盡可能接近給定的數字。當然,如果伺服器不能處理它,或者如果其他計時器或耗時的測試原件阻止它,那麼處理量將更低。作用在於控制輸送量,要注意把計時器放在執行緒群組,並在請求的上面。
目標處理量 Target throughput(in samples per minute): 1000
Calculate Throughput based on : all active threads in current thread group
計算處理量的其他設定:
圖 9、 設定計時器
步驟 4. 新增測試結果 Summary Report
設定在固定時間內發出特定數量的請求,在 AWS HTTP Request 按左鍵,新增 > 接聽 > Summary Report。
圖 10、 新增 Summary Report
可以直接按下開始後就會開始記錄。
圖 11、 觀察 Summary Report
按下上方的服務按鈕,選擇 CloudWatch ,進入 CloudWatch 主控台後,按下右方功能選單儀表板,按下建立儀表板後,輸入要觀察的衡量指標值 RequestCount
儀表板名稱: JmeterRequestCount
圖 12、建立 CloudWatch 儀表板畫面
圖 13、設定 CloudWatch 儀表板中 Widget 類型
Widget 的資料來源選擇 指標值( Metrics )
圖 14、設定 Widget 的資料來源
指標值設定為 Singapore > 全部 > ApplicationELB > 每個 AppELB 指標 > RequestCount ,要注意要確定看到上面的圖型有資料才能確定已經正確找到指標值,因為有時候會有很多個 AppELB 實體,所以需要去找一下ALB ID確認一下
圖 15、設定 RequestCount 指標值
因為需要知道 1 分鐘內有多少個請求,所以需要把_統計資料_從平均數改成樣本數,期間 5 分鐘改成 1 分鐘。
圖 16、設定圖形化指標
建立 JmeterRequestCount 儀表板的畫面如下, Jmeter 還一直都有在發出請求
圖 17、JmeterRequestCount 儀表板
References