我想对服务器进行负载测试,我将在其中连续发送带有数据的请求。 需求:在jmeter中,我想通过TCP协议连续长时间发送带有数据(文本)的请求,并且不应该等待上一个请求的响应来发送下一个请求。由于服务器不发送响应,因此jmeter应该不断发送请求。
我使用具有 10 个连接的普通线程组,具有无限循环和连续重用连接(线程),但由于 jmeter 正在等待响应,连接处于活动状态,但数据仅发送一次。 我还尝试了带有计数器和循环控制器的 JSR223 采样器,但连接处于活动状态,但请求一次也没有发送。 下面是groovy中的脚本 ` 导入 org.apache.jmeter.protocol.tcp.sampler.TCPSampler; 导入 org.apache.jmeter.threads.JMeterContextService; 导入 org.apache.jmeter.samplers.SampleResult;
// Retrieve the thread number (0-based index)
int threadNum = ctx.getThreadNum();
// Calculate the counter value based on the thread number
int baseCounterValue = 860181068935920;
int counterValue = baseCounterValue + threadNum;
log.info("Thread number: " + threadNum + ", Counter value: " + counterValue);
String dataToSend ="\$,Lt4G,LCR,NR,86018106,,L,1,08022024,112732,20.791864,85.261978,13.,225,26,Air4G,28,42,11001,,20 02,298085.8,3477,*";
log.info("Current counter value: " + dataToSend);
// Get the sampler from the context
TCPSampler tcpSampler = new TCPSampler();
tcpSampler.setServer("dummy server");
tcpSampler.setPort("4242");
tcpSampler.setRequestData(dataToSend);
// Send the request
tcpSampler.sample();`
我根本不明白为什么你需要 Groovy,你可以使用“普通”TCP Sampler 并设置一些最小超时:
当然,TCP Sampler 会因为在给定超时时间内未收到响应而失败,如果您想将其标记为通过,可以使用 Response Assertion: