導航:首頁 > 編程語言 > jmeter的java請求

jmeter的java請求

發布時間:2022-11-19 10:51:28

A. jmeter中的java請求是什麼意思

很多時候我們在對比
HTTP請求
的時候都是直接在ExMobi程序中模擬的,如果請求簡單這種做法是可取的。
但是如果經過多次嘗試都對比不出來,或者請求比較復雜,這時候就需要藉助工具來幫助了。
這里推薦一個工具Jmeter。

B. JMeter 4.0 分布式測試原理及填坑注意事項

我們使用 JMeter 進行性能測試時,經常遇到 JMeter 假死的情況。一般有兩個原因:一是 JMeter 原本是Java寫的,heap受硬體限制需要調優,二是單機無法分解超大並發比如100萬+並發壓測。因此,我們分二部走,首先我們需要進行jmeter分布式部署和調配,二是我們需要對每台執行機進行深度 JMeter JVM 調優,掠盡所有執行及的硬體和網路資源。

下圖為 JMeter 的原理圖,Controller 可以 GUI 模式運行,也可以非 GUI 模式運行。

PS:JMeter 分布式測試注意事項:

這是首要條件,JMeter 的 Controller 與 Slave 之間的連接也是通過網路通信連接起來的。如果網路通信不同,怎麼連接、怎麼配置都會失敗,搞得你一臉懵逼。

方法:ping 一下對方的 IP 地址,看是否連通。如果連通,如下所示

如果出現以下內容,說明單方向是不連通的。

連接不同解決辦法:

4.0版本官方幫助文檔有以下這句話:

在4.0以後的版本,需要先設置 keystore 才能正常進行分布式測試,不然會報以下錯誤:

在 Controller 的 JMETER_HOME/bin/ 路徑,Windows 系統運行 create-rmi-keystore.bat ,Unix 系統(包含 Linux,macOS)運行 create-rmi-keystore.sh 。

當您運行該腳本時,它將詢問您一些關於它將嵌入到證書中的一些名稱的問題。您可以輸入任何您想要的內容,只要keystore工具能接受它。第一個問題輸入的值必須與屬性server.rmi.ssl.keystore匹配,默認為rmi。創建 keystore 的示例如下所示。

以上步驟完成後,將 rmi_keystore.jks 復制到所有 Slave 的 JMETER_HOME/bin/ 路徑。

Controller 和 Slave 的機器配置好了。先在 Slave 啟動 jmeter-server 腳本,WIndows 系統運行 JMETER_HOME/bin/jmeter-server.bat ,Unix 系統運行 JMETER_HOME/bin/jmeter-server ;Controller 啟動 jmeter 腳本,WIndows 系統運行 JMETER_HOME/bin/jmeter.bat ,Unix 系統運行 JMETER_HOME/bin/jmeter.sh 。

運行 jmeter-server,添加hostname。直接運行成功:

啟動所有 Slave 機命令

啟動指定 Slave 機命令:

啟動 JMeter 的 UI 界面後,下圖是讓指定遠程端執行測試。選擇 Remote Start All 是啟動所有遠程端執行測試。Controller 本身不執行測試操作。

Configuring remote engine: 132.16.17.58:2099
error ring JRMP connection establishment; nested exception is:
javax.net.ssl.SSLHandshakeException: Remote host closed connection ring handshake
Failed to configure 132.16.17.58:2099
Stopping remote engines
Remote engines have been stopped
Error in NonGUIDriver java.lang.RuntimeException: Following remote engines could not be configured:[132.16.17.58:2099]
```

C. jmeter的java請求javasimpleclient設置超時時間

可以設置。
可以設置,在httpsampler中點擊高級選項,timeouts可以設置。每一個http請求的Advanced。高級。右邊的timeout,設置成2000就行。

D. JMeter基礎

一、Jmeter簡介

—-->生成不同格式的測試報告

以WEB性能測試為例:jmeter可以作為web伺服器與瀏覽器之間的代理網關,以便捕獲瀏覽器的請求和web伺服器的響應,如此就可以很容易地生成性能測試腳本。有了性能測試腳本,jmeter就可以通過線程來模擬真實用戶對web伺服器的訪問壓力。這與LoadRunner的工作原理基本一致( 向伺服器提交請求;從伺服器獲取請求返回的結果 )


二、JMeter下載安裝

1、安裝環境要求

Unix(Solaris,Linux,etc) 、 Windows(98,NT,2000,XP,WIN8)

2、JDK下載、安裝

右鍵計算機屬性->高級系統設置->系統屬性->高級->環境變數->添加如下的系統變數:

變數值:D:Program FilesJavajdk1.8.0_92【jdk安裝路徑】

變數值: .;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;

運行cmd->輸入java -version->顯示java版本就表示jdk安裝成功

3、JMeter下載安裝

4、JMeter環境配置

變數值:E:apache-jmeter-4.0 (就是jmeter保存的路徑,即jmeter解壓路徑)

如:JMETER_HOME=D:apache-jmetesapache-jmeter-4.0

變數值:

;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;%JMETER_HOME%/lib/logkit-2.0.jar

5、Jmeter 的Bin目錄下的幾個重要文件

6、啟動Jmeter

三、JMeter組件介紹 (JMeter常用組件)

1、測試計劃(Test Plan)

註:什麼是元素?

JMeter的不同組件稱為Elements。 每個元素都是為特定目的而設計的。

2、線程組(Threads)

例如,如果將線程數設置為100; JMeter將創建並模擬100個用戶對被測伺服器的請求

所有的控制器和取樣器都是在某個線程組下;

3、邏輯控制器(Logic controller)

邏輯控制器允許在線程中定義處理請求的順序。它允許控制「何時」將用戶請求發送到Web伺服器。例如,可以使用隨機控制器隨機向伺服器發送HTTP請求

例如:我們在收郵件時,只需要登錄一次郵箱既可查看多封郵件。如果這個場景我們在Jmeter中實現,我們需要控制登錄的次數,如何實現呢?Jmeter邏輯控制器中的僅一次控制器就可以完成。當然了,控制器不只是這一個,還有很多其他的控制器來完成我們的各種需求。

除了為「線程組」指定的循環值之外,循環控制器使取樣器運行一定次數。例如,如果你

將一個HTTP請求添加到循環控制器,循環計數為50

將「線程組」循環計數配置為2

然後,JMeter將發送總共50 * 2 = 100個HTTP請求。

除了循環值= 2,你為上面的線程組指定。所以JMeter將發送總共2 * 50 = 100個HTTP請求。

又如:線程組中設置循環次數3,循環控制器中設置循環測試2,


即:線程組的循環與循環控制器為父子關系,且循環控制器只對子請求有效

註:錄制腳本的循環按循環控制器中的調協循環

作為循環控制器的子節點,僅一次控制器在每循環的第一次迭代時均會被執行

HTTP請求、FTP請求、JDBC請求

這3個請求應該運行5次; JMeter將向伺服器發送總共5個用戶請求。

按順序,按以下順序依次發送請求:HTTP請求 - > FTP請求 - > JDBC請求,對於每個循環按隨機順序,請求隨機發送,FTP請求 - > HTTP請求 - > JDBC請求 或 JDBC請求 - > FTP請求 - > HTTP請求等

4、配置元件(Config element)

比如CVS Data Set Config,它可以幫助我們從文件中讀取測試數據。另外Jmeter也提供了眾多的函數來幫我們生成動態數據。

緩存管理器),自動記錄伺服器返回的Cache信息。簡單說就是它為取樣器提供預備數據,然後由取樣器

發出請求。

入不同的登錄憑據。 該登錄信息(例如,用戶名,密碼)可以存儲在文本文件中。 JMeter有一個元素,允許您從該文本文件中讀取不同的參數。 它是「CSV數據集配置」,用於從文件中讀取行,並將它們拆分為變數。


這是CSV數據的示例。 這是一個文本文件,其中包含用於登錄目標網站的用戶和密碼

密碼將作為cookie存儲在計算機中。下次訪問 www..com 時 ,無需再次登錄,因為在瀏覽器將使用您的Cookie作為用戶數據登錄。

Cookie管理器會自動存儲該cookie,並將其用於將來對該特定網站的所有請求。

此元素允許您設置HTTP請求控制器使用的默認值

server name = google.com

PS:在執行順序方面有個例外,配置元件"用戶定義的變數"無論它處於測試樹的哪個位置,總是在測試的初始階段執行。所以個人建議把它放在線程組的開始部分。

5、定時器(Timer)( 固定定時器:思考時間

JMeter向http://www..com創建一個用戶請求100次

每個用戶請求之間的延遲為5000毫秒

6、前置處理器(Per processors)

7、取樣器(Samples)

您將FTP「下載文件」或「上載文件」請求發送到FTP伺服器。

JMeter將FTP命令發送到FTP伺服器ftp.example.com ,然後從該伺服器下載文件Test.txt。


您可以配置JMeter將SQL查詢發送到此伺服器以檢索數據。

如果要測試郵件伺服器,可以使用SMTP采樣器。 此采樣器用於使用SMTP協議發送電子郵件

8、後置處理器(post processors)

9、斷言(Assertions)

用過LR的讀者應該會知道檢查點這個功能,可以幫助我們來判斷請求是否成功返回且是否符合要求,在Jmeter中我們不叫檢查點,我們叫斷言,接觸過selenium的也會懂這個概念。就是用一個預設的結果(值、表達式、時間長短等條件)與實際結果匹配,匹配到則成功,反之失敗。

APPly to: 適用范圍

Main sample and sub-samples:作用於父節點取樣器及對應子節點取樣器

Main sample only:僅作用於父節點取樣器

Sub-samples only:僅作用於子節點取樣器

JMeter Variable:作用於jmeter變數(輸入框內可輸入jmeter的變數名稱)

要測試的響應欄位: 要檢查的項

響應報文

Documeng(text):測試文件

URL樣本

響應代碼

響應信息

Response Headers:響應頭部

Ignore status:忽略返回的響應報文狀態碼

模式匹配規則:

包括:返回結果包括你指定的內容

匹配:(好像跟Equals查不多,弄不明白有什麼區別)

Equals:返回結果與你指定結果一致

Substring:返回結果是指定結果的字串

否:不進行匹配

要測試的模式: 即填寫你指定的結果(可填寫多個),按鈕【添加】、【刪除】是進行指定內容的管理

10、監聽器(Listener)

「圖形結果」偵聽器在圖形上顯示伺服器響應時間

「查看結果樹」以基本HTML格式顯示用戶請求的結果(View Results Tree)

通過察看結果樹,我們可以看到每個請求的結果,其中紅色的是出錯的請求,綠色的為通過。

Thread Name:線程組名稱

Sample Start: 啟動開始時間

Load time:載入時長

Latency:等待時長

Size in bytes:發送的數據總大小

Headers size in bytes:發送數據的其餘部分大小

Sample Count:發送統計

Error Count:交互錯誤統計

Response code:返回碼

Response message:返回信息

Response headers:返回的頭部信息

這里綠色的就說明請求是通過的,返回值是200,如果出現紅色的 就說明請求失敗,這時候可以通過右邊的取樣器結果和響應數據來查看結果。

用表格可看結果(View Results in Table)

四、組件執行順序

在同一作用域名范圍內(不考慮邏輯控制器),測試計劃中的元件按照如下順序執行。
(1)配置元件(config elements )
(2)前置處理程序(Per-processors)
(3)定時器(timers )
(4)取樣器(Sampler)
(5)後置處理程序(Post-processors) (除非Sampler 得到的返回結果為空)
(6)斷言(Assertions)(除非Sampler 得到的返回結果為空)
(7)監聽器(Listeners)(除非Sampler 得到的返回結果為空)

問題

1、為什麼要使用jmeter?他可以幫我們解決那些事情?

jmeter主要是做介面測試和性能測試,它支持的協議也不少,用來測試http,資料庫並發都是很方便快捷的工具,相對於lr來說更靈活與實用,等等

2、我們在什麼時候會使用jmeter?

· 在一個項目中我們可能前段還沒有開發完畢我們想看一下伺服器的相應數據。

· 比如我們校驗資料庫有沒有做校驗,我們可以繞過前端

· 我們想看一下這個介面或者多個介面的並發量是多少,性能怎麼樣

3、.誰在使用?為什麼是他在使用?

一般使用者為開發人員或者測試人員。

開源免費,基於Java編寫,可集成到其他系統可拓展各個功能插件

支持介面測試,壓力測試等多種功能,支持錄制回放,入門簡單

相較於自己編寫框架活其他開源工具,有較為完善的UI界面,便於介面調試

多平台支持,可在Linux,Windows,Mac上運行

4、使用jmeter需要了解什麼?介面與介面之間的聯系怎麼處理?

· 我們必須了解介面的工作原理

· 需要掌握http中的get和post請求原理

· 需要掌握請求頭,響應頭,請求體個個欄位代表什麼意思,並且欄位的返回值的各代的含義是什麼?

· 響應的狀態碼各代表什麼含義·

· json是什麼?

· 介面測試用例的設計方法,以及測試時點

介面之間的聯系:

介面與介面之間存在聯系,比如上個介面的返回值是下一個介面的入參,那我們就要在上個介面返回值賦值變數,供下一個介面調用。

5、在使用jmeter中我想要的預期結果和實際結果是怎樣對比的?

· 我們做所有的測試無非就是預期結果和實際結果作對比,如果預期結果和實際結果作對比,那麼這個介面就是可用的,不相等那麼這個介面就是有問題的。

·在jmeter中我們的用斷言做實際結果和預期結果的對比,它提供了許多斷言方法,其中最常用的就是響應斷言,在後面我會專門的寫一下響應斷言以及一些常用斷言的用法。

· 我們還需要知道在jmeter中我們斷言的內容是啥?這點是很重要的

7、使用jmeter的是的我們的有哪些方面的提升,jmeter的主流方向是什麼?

· 對整個前端與後端的一個相互傳輸數據原理有了進一步了解

· 可以提高測試效率,可以提早的參與進來,較早的發現問題,減少開發成本,縮短整個產品的上線周期,可以給測試流出充裕的時間,保證產品質量。

·掌握了介面測試的測試點,已及用例的設計方法。

jmeter測試的主流方向:

· 用於性能測試,壓力測試

· 介面測試

E. jmeter用java代碼怎樣編寫介面測試源碼

我們在做性能測試時,有時需要自己編寫測試腳本,很多測試工具都支持自定義編寫測試腳本,比如LoadRunner就有很多自定義腳本的協議,比如"C Vuser","Java Vuser"等協議.同樣,Jmeter也支持自定義編寫的測試代碼,不過與LoadRunner不同的是,Jmeter沒有自帶編譯器,需要藉助第三方編譯器才能實現.下面舉一個簡單的Java自定義測試代碼例子,使用Java編譯器編寫測試代碼(Java編譯器可以用Eclipse,JBulider等),實現功能為:在測試前輸入任意一個字元串,然後判斷該字元串的長度是否大於5,如果大於則測試結果成功,否則測試結果位失敗,然後在放到Jmeter中模擬10個用戶測試,同時運行這段代碼,具體實現如下:
1.打開Java編譯器,新建一個項目"TestLength",然後新建一個包"app".
2.從Jmeter的安裝目錄lib/ext中拷貝兩個文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的項目中,然後引入這兩個JAR文件.(具體的引入方法參考各個Java編譯器的使用方法)
3.在"app"包中新建一個類,名字叫"TestLength",不過這個類要繼承"AbstractJavaSamplerClient"類,如果項目引入步驟二中的兩個文件,就可以找到"AbstractJavaSamplerClient"類了.
4."TestLength"類在繼承"AbstractJavaSamplerClient"類的同時也會繼承四個方法,分別是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用於設置傳入的參數;"setupTest"方法為初始化方法,用於初始化性能測試時的每個線程."runTest"方法為性能測試時的線程運行體;"teardownTest"方法為測試結束方法,用於結束性能測試中的每個線程.
5.具體實現代碼如下:
package app;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import com.passpod.core.t8.*;
/**
* @author樂以忘憂
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class TestLength extends AbstractJavaSamplerClient{
private SampleResult results;
private String testStr;
//初始化方法,實際運行時每個線程僅執行一次,在測試方法運行前執行,類似於LoadRunner中的init方法
public void setupTest(JavaSamplerContext arg0) {
results = new SampleResult();
testStr = arg0.getParameter("testString", "");
if (testStr != null && testStr.length() > 0) {
results.setSamplerData(testStr);
}
}
//設置傳入的參數,可以設置多個,已設置的參數會顯示到Jmeter的參數列表中
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("testStr", ""); //定義一個參數,顯示到Jmeter的參數列表中,第一個參數為參數默認的顯示名稱,第二個參數為默認值
return params;
}
//測試執行的循環體,根據線程數和循環次數的不同可執行多次,類似於LoadRunner中的Action方法
public SampleResult runTest(JavaSamplerContext arg0) {
int len = 0;
results.sampleStart(); //定義一個事務,表示這是事務的起始點,類似於LoadRunner的lr.start_transaction
len = testStr.length();
results.sampleEnd(); //定義一個事務,表示這是事務的結束點,類似於LoadRunner的lr.end_transaction
if(len < 5){
System.out.println(testStr);
results.setSuccessful(false); //用於設置運行結果的成功或失敗,如果是"false"則表示結果失敗,否則則表示成功
}else
results.setSuccessful(true);
return results;
}
//結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束後執行,類似於LoadRunner中的end方法
public void teardownTest(JavaSamplerContext arg0) {
}
}
6.把上面的例子打包,然後把生成的"TestLength.jar"文件拷貝到Jmeter的安裝目錄lib/ext下.
7.運行Jmeter,添加一個線程組,然後在該線程組下面添加一個Java請求(在Sampler中),在Java請求的類名稱中選擇咱們剛創建的類"app.TestLength",在下面參數列表的"testStr"後面輸入要測試的字元串,然後添加一個監聽器(聚合報告),設置一下模擬的用戶數就可以測試了.如果測試不成功,Jmeter會在它自己個輸出框中拋出這個字元串.
通過上面的例子我們可以發現,使用Jmeter自定義Java測試代碼,配合Jmeter自帶的函數,就可以實現出LoadRunner中"Java Vuser"協議的絕大多數功能,而且是沒有用戶數限制和完全免費的(嘿嘿).上面的例子非常簡單,而且沒有任何實際意義,只是一個簡單的Jmeter測試代碼示例,用於拋磚引玉,希望大家一起交流,共同 進步.

F. Jmeter 問題錦集

java.io.FileNotFoundException:rmi_keystore.jks

文件校驗問題

1、不進行文件校驗,打開 [ jmeter 安裝目錄 ]\bin\jmeter-server.bat 文件

2、運行 create-rmi-keystore.bat (Windows)/ create-rmi-keystore.sh (Linux) 文件並自行填寫相關信息,運行後,bin 目錄下會多出一個 rmi_keystore.jks 文件,然後將這個文件拷貝到想要運行的 slave 機上,就可以不使用方法1

Error in rconfigure() method java.rmi.ConnectException: Connection refused to host: 192.168.xxx.xxx; nested exception is:
java.net.ConnectException: Connection timed out: connect

1、192.168.xxx.xxx 這個IP 可能是虛擬網卡的 IP,關閉所有的虛擬網卡,只保留本地網路
2、檢查slave伺服器的防火牆是否打開,需要關閉
3、通信雙方的機器沒有識別到有效的遠程IP,考慮將遠程方法調用伺服器的主機IP進行固定設置,再作效果檢查
4、開始測試,但是測試速度非常慢,測試結果也是非常大的值,檢查slave伺服器和被測試伺服器之間是否可以 ping 通地址

第3點分析相應解決方法:
Master機修改 jmeter.bat (windows)/ jmeter.sh (Liunx)

Error in rconfigure() method java.rmi.ConnectException:Connection refused to host

1、查看埠是否被佔用

1、更換埠

java.net.ConnectException:Connection timed out:connect

由於連接被拒絕,這意味著防火牆可能已切斷連接

需要在JMeter和目標伺服器之間打開埠

Response too large to be displayed. Size: 412152 > 204800

未設置察看結果樹的大小

1、打開 [ jmeter 安裝目錄 ]\bin\user.property 文件

2、右擊測試用例——添加——監聽器——保存響應到文件, 填寫要保存的文件名
3、將文件中的返回結果粘貼到此用例的響應斷言中

Not able to find Java executable or version. Please check your Java installation. errorlevel=2

1、errorlevel=1,當前系統安裝的 jdk 版本過低
2、errorlevel=2,沒有配置 jdk 環境變數所致
3、errorlevel=3,當前系統安裝的 jdk 版本過低,不符合 jmeter 要求所致

通用方法:
配置對應這個 jmeter 版本的 jdk 版本的環境變數

第1點分析,其他解決方法:
打開 jmeter.bat 文 件,注釋 set DUMP=-XX:+HeapDumpOnOutOfMemoryError

Bad call to remote host

1、檢查 salve 機器上的 jmeter-server 是否啟動
2、檢查 JMeter.properties 中 remote_hosts 的配置是否錯誤

1、啟動 salve 機器上的 jmeter-server
2、正確配置 JMeter.properties 中 remote_hosts

1、Non HTTP response message: The target server failed to respond
2、Non HTTP response code: java.net.SocketException

調整超時時間,jmeter 的 http 請求中,工具會默認勾選 Use KeepAlive ,在運行時,jmeter.properties 中的 httpclient.timeout 設置默認是注銷的,也就是連接空閑,立馬斷開

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件
根據情況設置10-60毫秒,能解決報錯問題,問題還是沒有真正解決

Server failed to start: java.rmi.RemoteException: Cannot start. *** is a loopback address.
An error occurred: Cannot start. *** is a loopback address.

沒有指定主機導致這個錯誤

1、修改 hosts 文件

2、打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Waiting for possible shutdown message on port 4445

在 master 跑測試腳本時,會一直提示如下信息,導致測試一直跑不起來
這個是用於監聽shutdown message的,如果不需要,可以直接設置為0即可

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Could not reserve enough space for 2097152KB object heap
errorlevel=1

Jmeter 內存不足

打開 [ jmeter 安裝目錄 ]\bin\jmeter.bat 文件

could not find ApacheJmeter_core.jar

找不到 jdk 環境

1、正確安裝對應版本的 jdk
2、正確設置環境變數

jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:

配置了 127.0.0.1,但是未開啟本機的 jmeter-sever.bat/jmeter-sever

開啟本機的 jmeter-sever.bat/jmeter-sever

運行成功,響應斷言也正確通過,但是察看結果樹里為空

模式(Mode)(采樣結果發送模式)默認是Standard,在采樣結果產生後立即發送

打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

Response code: Non HTTP response code: java.net.SocketTimeoutException
Response message: Non HTTP response message: connect timed out

發生該錯誤時,jmeter已經連接上伺服器,查看load time沒有超過設定的request timeout時間,錯誤可能的原因是,伺服器那邊未處理該線程的請求,或者為保證服務能力,斷掉了連接。
為了驗證該猜想,持續大於半小時向伺服器發送該並發數量的請求,一段時間後,request收到503的response,證明猜想



Java.NET.BindException: Address already in use: connect

短時間內new socket操作很多,而socket.close()操作並不能立即釋放綁定的埠,而是把埠設置為TIMEWAIT 狀態,過段時間(默認240s)才釋放,(用netstat -na可以看到),最後系統資源耗盡(windows上是耗盡了pool of ephemeral ports ,這段區間在1024-5000之間)

在運行 JMeter agent 的機器上,添加註冊表條目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

jmeter腳本運行的過程中,伺服器性能參數沒有明顯變化 (CPU,內存,I/O),但request的響應時間很長。

觀察jmeter agent機器網路使用情況,網路使用持續達到帶寬的限制峰值。request 發送的過程中pending在網路中,實際並發的request並沒有同一時間到達伺服器,所以伺服器沒有明顯變化。

提高jmeter agent機器網路帶寬。

java.io.IOException: Error writing to server
java.net.SocketException: Connection reset

可能是本機的 JVM 太小了

打開 [ jmeter 安裝目錄 ]\bin\jmeter.bat 文件

java.net.SocketException: Unrecognized Windows Sockets error: 0: recv failed



打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

java.net.SocketTimeoutException: Read timed out



打開 [ jmeter 安裝目錄 ]\bin\jmeter.properties 文件

For performance it is advised to check "Interpret Condition as Variable Expression"
and use __jexl3 or __groovy evaluating to true or false or a variable that contains true or false.
${JMeterThread.last_sample_ok) can be used to test if last sampler was successful

對於4.x之後的版本 JMeter 中的 If Controller,在Expression輸入框中直接輸入判斷的表達式,如1 == 1、${threadNum} > 2,而不做求值計算(true/false)就執行JMeter是沒有效的,達不到預期的效果。採用JMeter比較早期的版本(如:2.x版本),直接就寫判斷的表達式,並沒有作真假求值運算也能被識別

1、在Expression輸入框中,建議將判斷條件解釋為變數表達式,並使用__jexl3函數或__groovy函數對該變數表達式求值為true/false
2、可輸入值為true/false的變數
3、${JMeterThread.last_sample_ok}可用於檢測最後一個取樣器是否成功執行

java.lang.IllegalStateException: Engine is busy - please try later

1、可能是防火牆規則被阻止
2、控制機、執行機未設置需要連接的IP

1、關閉控制機、執行機的防火牆
2、打開 [ jmeter 安裝目錄 ]\bin\jmeter-server 文件

3、打開 [ jmeter 安裝目錄 ]\bin\system.properties 文件

Response code: Non HTTP response code:org.apache.http.conn.ConnectTimeoutException
Response message: Non HTTP responsemessage: Connect to 10.15.107.112:9089 timed out

Non HTTPresponse code 說明沒有收到來自伺服器的 response。
導致 ConnectTimeoutException 錯誤的可能有 JMeter 本身問題,也可能是伺服器問題。

通過分布式運行 JMeter 的方式來消除 JMeter 本身的影響

G. jmeter的java請求中為什麼沒有調用beanshell腳本

一、操作變數:通過使用Bean shell內置對象vars可以對變數進行存取操作 a) varsget("name"):從jmeter中獲得變數值 b) varsput("key","value"):數據存到jmeter變數中 二、操作屬性:通過使用Bean shell內置對象props 可以對屬性進行存取操作jmeter beanshell裡面寫了函數怎麼調用

H. jmeter的post請求是java還是json

post,java,json是三個概念,相互沒有關系。post請求就是post請求,屬於http協議的知識。java就是java,一種語言。json就是json,一種數據結構。大多數支持發送http協議(post,get之類的請求),http協議可以設置傳輸數據的結構。通過Content-type告訴伺服器這個請求使用什麼數據結構傳輸。

I. jmeter怎麼實現在頁面搜索框搜商品

jmeter實現在頁面搜索框搜商品一般選擇Search搜索。
在要搜索的目錄下,選擇Search搜索:如果有相匹配的,則對應的目錄會標紅,標紅的目錄只有在Reset Search重置搜索的情況下才會恢復正常,如果不點重置搜索則一直會標紅,Search: 搜索所有配置中匹配的項,匹配成功顯示為紅色。
Jmeter是一款使用Java開發的,開源免費的測試工具,主要用來做功能測試和性能測試(壓力測試/負載測試)。而且用Jmeter來測試Restful API,非常好用。預置知識必須學好HTTP協議。1、下載和運行,從官方網站下載Jmeter,並解壓到本地,運行bin/jmeter.bat。2、Jmeter環境變數配置,電腦右鍵屬性,進入高級系統設置--高級--環境變數--系統變數,在path添加bin路徑:PATH=D:\(你的目錄)apache-jmeter-4.0\bin,然後點擊Jmeter目錄下bin目錄裡面的 jmeter.bat 文件。3、創建測試計劃,首先,你需要啟動JMeter GUI。然後,你可以選擇從瀏覽器或本地應用程序記錄應用程序。通過菜單:文件 → Templates… → Recording。注意,你還可以通過手動生成測試計劃,你需要閱讀文檔並理解上面概念。還可以通過下面的方式進行調試:運行 → Start no pauses;運行 → 啟動,驗證線程組和查看結果樹的渲染和調試(CSS/JQUERY, JSON, Regexp, XPath)。確保在構建測試計劃時遵循最佳實踐。4、下載fiddler並配置,下載fiddler並安裝好,打開Fiddler,下面使用Fidder抓包,並使用jmeter模擬鏈接到sogou網站並輸入內容進行搜索。5、Jmeter信息頭管理器配置,在網頁輸入:https://www.sogou.com/,根據從Fiddler抓到對應的請求,來填寫Jmeter的HTTP信息頭管理器。從抓包看得出來,這是一個http請求,使用的是get方法,劃紅線的前半部分是伺服器,後半部分是路徑。伺服器可以在 「請求默認值中」配置,也可以在「HTTP請求」中配置。6、發送HTTP請求,在jmeter sampler,添加一個HTTP請求,根據上面抓包的信息填寫。7、查看結果樹,在監聽器添加「查看結果樹」,在填寫好HTTP請求的參數後,點擊運行按鈕,便可以在查看結果樹裡面查看運行結果,包含請求參數和返參

J. jmeter java請求和http請求有什麼不同

其實也沒什麼區別的,一樣的效果。
HTTP請求格式告訴我們,有兩個位置或者說兩種方式可以為request提供參數:request-line方式與request-body方式。
request-line

request-line方式是指在請求行上通過URI直接提供參數。
(1)
我們可以在生成request對象時提供帶參數的URI,如:

HttpUriRequest request = new HttpGet(
"http://localhost/index.html?param1=value1¶m2=value2");

(2)
另外,HttpClient程序包為我們提供了URIUtils工具類,可以通過它生成帶參數的URI,如:

URI uri = URIUtils.createURI("http", "localhost", -1, "/index.html",
"param1=value1¶m2=value2", null);
HttpUriRequest request = new HttpGet(uri);
System.out.println(request.getURI());

閱讀全文

與jmeter的java請求相關的資料

熱點內容
java倒三角列印 瀏覽:112
通達信回封板主圖源碼 瀏覽:44
戰地什麼伺服器 瀏覽:299
安卓為什麼老是閃退怎麼辦 瀏覽:803
樂高機器人的編程軟體下載 瀏覽:223
工作中怎麼使用加密狗 瀏覽:735
雲伺服器的後台找不到 瀏覽:98
php逐行寫入文件 瀏覽:912
javaoracleweb 瀏覽:440
京東加密碼怎麼弄 瀏覽:467
單片機程序員培訓 瀏覽:992
PHP商城源代碼csdn 瀏覽:636
怎麼把電腦里文件夾挪出來 瀏覽:693
java流程處理 瀏覽:685
ftp創建本地文件夾 瀏覽:660
腰椎第一節壓縮 瀏覽:738
xp去掉加密屬性 瀏覽:117
2345怎麼壓縮文件 瀏覽:982
迷你奪寶新演算法 瀏覽:407
伺服器如何防止木馬控制 瀏覽:715