JMeter性能測試實戰、分佈式性能測試

通過遠程運行JMeter,您可以跨多臺低端計算機複製測試,從而模擬服務器上的更大負載。JMeter客戶端的一個實例可以控制任意數量的遠程JMeter實例,並從中收集所有數據。


將測試樣本保存到本地機器

從一臺機器管理多個JMeter服務

無需將測試計劃複製到每個服務器 - 客戶端將其發送到所有jmete服務器進行測試

注意:所有服務器都運行相同的測試計劃。JMeter不會在服務器之間分配負載,每個都運行完整的測試計劃。因此,如果您設置1000個線程並擁有6個JMeter服務器,則最終會注入6000個線程。


分佈式測試有一些基本的限制。 

沒有代理服務器,RMI無法通過子網進行通信; 因此JMeter也無法使用代理。 

從版本2.9開始,JMeter會將所有測試結果剝離響應數據到控制檯,這樣可以減少對網絡IO的影響。確保您監控您的網絡流量,以免流量造成爭用。 

運行在2-3 GHz CPU(最新CPU)上的單個JMeter客戶端可以處理1000-2000個線程,但具體還取決於測試類型:http、ftp。


分佈測試原理圖: 





配置節點

確保所有節點(客戶端和服務器): 

1、正在運行完全相同的JMeter版本。 

2、在所有系統上使用相同版本的Java。使用不同版本的Java可能會工作但不鼓勵。 

3、擁有RMI over SSL的有效密鑰庫,或者禁用了SSL。


設置SSL

自JMeter 4.0以來,RMI的默認傳輸機制將使用SSL。SSL需要密鑰和證書才能工作。不使用ssl將存在安全漏洞。


Windows系統(稱爲bin / create-rmi-keystore.bat) 

Unix系統(稱爲bin / create-rmi-keystore.sh)。 

執行上述腳本將生產密鑰,該密鑰有效期爲七天,默認密碼值爲’ changeit ’ 

例如設置時候:


$ cd jmeter/bin

$ ./create-rmi-keystore.sh

What is your first and last name?

  [Unknown]:  rmi

What is the name of your organizational unit?

  [Unknown]:  My unit name

What is the name of your organization?

  [Unknown]:  My organisation name

What is the name of your City or Locality?

  [Unknown]:  Your City

What is the name of your State or Province?

  [Unknown]:  Your State

What is the two-letter country code for this unit?

  [Unknown]:  XY

Is CN=rmi, OU=My unit name, O=My organisation name, L=Your City, ST=Your State, C=XY correct?

  [no]:  yes


Copy the generated rmi_keystore.jks to jmeter/bin folder or reference it in property 'server.rmi.ssl.keystore.file'

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

然後複製generated rmi_keystore.jks到bin目錄然後在jmeter.propertis中設置


server.rmi.ssl.keystore.file=generated rmi_keystore.jks //引用該SSL密鑰


對進行分佈測試所有jmeter服務機器,都需要通過進行項目配置。生成一個密鑰後,複製到其他jmeter 客戶機、服務機進行相應配置。


JMeter / RMI需要從客戶端到服務器的連接。這將使用您選擇的端口,默認值爲1099。 

JMeter / RMI還需要反向連接才能將服務器的樣本結果返回給客戶端。 

這將使用高編號的端口。 

此端口可以通過稱爲JMeter的屬性來控制client.rmi.localport在jmeter.properties。 

如果JMeter客戶端和服務器之間有任何防火牆或其他網絡過濾器,則需要確保它們已設置爲允許通過連接。如有必要,請使用監控軟件來顯示正在生成的流量。


第1步:啓動服務器


要在遠程節點中運行JMeter,通過運行JMETER_HOME / bin / jmeter-server(unix)或JMETER_HOME / bin / jmeter-server.bat(windows)腳本,在希望運行的所有機器上啓動JMeter服務器組件。


請注意,除非使用不同的RMI端口,否則每個節點上只能有一個JMeter服務器。


從JMeter 2.3.1開始,JMeter服務器應用程序自己啓動RMI註冊表; 沒有必要單獨啓動RMI註冊表。要恢復到以前的行爲,請定義JMeter屬性


server.rmi.create = FALSE 

在服務器主機系統上。 

默認情況下,RMI爲JMeter服務器引擎使用動態端口。這可能會導致防火牆出現問題,因此您可以定義JMeter屬性server.rmi.localport 來控制此端口號。如果這不是零,它將被用作服務器引擎的本地端口號。


第2步:將服務器IP添加到客戶端的“屬性文件”中


在控制的JMeter機器上編輯屬性文件。在JMETER_HOME / bin / jmeter.properties中,找到名爲“ remote_hosts ” 的屬性,並添加正在運行的JMeter服務器IP地址的值。可以添加多個這樣的服務器,逗號分隔。


請注意,您可以使用-R 命令行選項 來指定要使用的遠程主機。這與使用-r和-Jremote_hosts = {serverlist}具有相同的效果。例如


jmeter -Rhost1,127.0.0.1,host2 

如果您定義了JMeter屬性server.exitaftertest = true,那麼服務器將在運行單個測試後退出。 

也可以通過客戶端遠程啓動測試命令屬性 -X 將在運行單個測試後退出。


步驟3a:從GUI客戶端啓動JMeter客戶端以檢查配置


現在您已準備好啓動控制的JMeter客戶端。對於MS-Windows,使用腳本“ bin / jmeter.bat ” 啓動客戶端。對於UNIX,使用腳本“ bin / jmeter ”。您會注意到Run菜單包含兩個新的子菜單:“Remote Start”和“Remote Stop”(見圖1)。這些菜單包含您在屬性文件中設置的客戶端。使用遠程啓動和停止,而不是普通的JMeter啓動和停止菜單項。


步驟3b:從非GUI客戶端啓動JMeter


GUI模式只能用於調試,作爲更好的選擇,您應該從非GUI(命令行)客戶端開始在遠程服務器上進行測試。執行此操作的命令是:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章