JMeter實戰(二) 運行原理


運行原理

如果不用工具,要做 100 並發的壓力測試,得想辦法組織 100 個人,每個人操作1台電腦,一聲令下,100 個人同時點擊,對系統造成 100 並發。現實中,很難找 100 個人和 100 台電腦來做測試。1 個人和 1 台電腦倒是容易得多。有沒有辦法用 1 個人和 1 台 電腦對系統造成 100 並發?有辦法的。電腦是硬件,硬件之上運行着的是軟件,最基礎的軟件是操作系統。操作系統之上運行着的是進程,進程可以打開任務管理器看到

操作系統會把資源分配給進程,進程拿着資源找 CPU 執行。進程挺大的,CPU 看着一堆進程頭也大了,告訴進程拆小一點再來找我。進程思來想去,想了個辦法,把進程拆成了多個線程。進程把線程拿給 CPU,CPU 一看樂了,這樣我就能靈活切換了,哎喲,不錯哦。這就是書本上說的,進程是操作系統分配資源的最小單位,線程是程序執行的最小單位。

操作系統有多個進程,進程有多個線程。多進程、多線程,正好可以用來模擬多個用戶,對系統造成多個並發。 JMeter、LoadRunner 等壓測工具的原理就是基於這個道理來的。LoadRunner 既支持多進程模擬,也支持多線程模擬。JMeter 不同。JMeter 是由 Java 寫成的,運行在 JVM 虛擬機上面。進程開銷比較大,導致進程的數量有限。如果要增加負載,就只能加機器,這顯然不太經濟。所以 JMeter 只支持多線程

JMeter 的運行原理就是用多線程來模擬多用戶

運行環境

JMeter 安裝包是綠色版,解壓即用,解壓后的目錄

bin:配置文件、啟動文件、啟動jar包、示例腳本等。

docs:JMeter API 離線幫助文檔。

extras:輔助功能,可以與 Ant、Jenkins 集成。

lib:組件,基礎包放在 lib 根目錄下,擴展包放在 lib/ext 目錄下。

licenses:證書文本文件。

printable_docs:JMeter 離線幫助文檔。

LICENSE:證書說明。

NOTICE:版權聲明。

README:JMeter 簡介。

打開 bin 目錄,找到啟動文件啟動 JMeter,Windows 用 jmeter.bat,Linux 用 jmeter.sh

測試計划

啟動后,會打開界面,有 1 個測試計划(TestPlan),JMeter 是基於測試計划來組織和管理的

在 JMeter 中,一個界面只能打開一個測試計划,保存后會生成一個 .jmx 腳本文件,一個測試計划就是一個測試腳本。這意味着測試計划是在這個界面看到的樹形結構的根節點,根節點只能有一個,如果要同時打開多個測試計划,需要開多個界面。同時顯而易見的是,JMeter 的請求模擬和並發設置都是在測試腳本文件中一起設置的。

JMeter 是用線程來模擬用戶的,那么測試計划就必須至少有一個線程組,即使這個線程組只有一個線程。(也可以創建多個線程組,把不相關聯的業務分布在不同的線程組,比如讓一些用戶請求這個接口,一些用戶請求那個接口)

而且必須要有一個取樣器和一個監聽器,模擬用戶請求,獲取測試結果,否則用 JMeter 就是用了個寂寞,既不發請求,又不看結果,哈哈。以下是簡單示例

遠程運行

線程創建過多會占用大量系統資源,一般單台機器,性能稍微好點的跑個 500 的並發,內存就比較吃緊了。因為做壓力測試,壓力機本身不能是性能瓶頸,否則壓測就沒有意義,所以實際測試成百上千的並發時,單台機器是不夠用的,需要考慮用負載機群,也就是用多台負載機分布來模擬並發,如圖所示

控制機:管理遠程負載機,控制遠程負載機腳本運行,收集遠程負載機測試結果。控制機本身也是個負載機。

遠程負載機:向被測應用系統發起負載。遠程負載機首先要啟動客戶端(Agent: bin 目錄下 jmeter-server.bat),才能被控制機接管。如果遠程負載機腳本需要參數或依賴jar包,需要使用自動化工具從控制機發送到遠程負載機。

遠程運行邏輯

  • 遠程負載機啟動 Agent 客戶端,等待控制機連接。
  • 控制機連接上遠程負載機。
  • 控制機發送指令到遠程負載機啟動線程。
  • 遠程負載機運行腳本,回傳結果數據。
  • 控制機收集結果並顯示。

遠程運行腳本

  1. 遠程負載機啟動 jmeter-server.bat

  2. 在控制機 bin\JMeter.properties 文件中,找到 remote_hosts,添加遠程負載機的 ip 和 port

  3. 多個遠程負載機,ip 用逗號分隔,如 remote_hosts=192.168.0.1:1664,192.168.0.2:1664

  4. 1664 是 JMeter 的 Controller 和 Agent 之間進行通訊的默認 RMI 端口號

  5. 在控制機打開 GUI,菜單欄 Run 下執行 Remote 命令,控制遠程負載機啟動,停止,退出

簡要回顧

本文首先簡單介紹了多進程和多線程,說明了 JMeter 的運行原理是用多線程模擬多用戶。接着講述了 JMeter 的運行環境,有哪些文件和文件夾,怎么啟動 JMeter 運行。打開 JMeter 后,看到一個測試計划,實際上對應着一個 .jmx 測試腳本文件(文本編輯器打開內容是 xml 代碼)。最后說明了如何通過遠程運行負載機群來擴充負載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM