我想使用jmeter的TCP采样器对系统进行压力测试(我正在使用默认的TCP采样器和jmeter GUI),但是线程组循环计数器似乎无法正常工作。当我运行测试线程时,只会发送一条消息。几乎感觉到jmeter似乎在开始发送其他消息之前正在等待服务器的响应,除非在我的情况下服务器不应该发送任何类型的确认。
我正在发送文本消息,并使用默认的tcp采样器类,并向采样器添加了响应断言,告诉其忽略响应(我希望这可以解决我的问题)。我也确定我的服务器不是问题所在,并且消息已按照服务器期望的方式进行格式化(用空行表示消息的结尾)
The result after starting my test
从第3张图片中可以看到,当我开始测试时,它会发送一条消息并挂起。我的服务器仅收到第一条消息。由于我是jmeter的新手,所以任何建议都将有所帮助。我以为我可以通过默认的TCP采样器完成我需要的工作,如果不是这种情况,谁能指出我的正确方向?
答案 0 :(得分:0)
查看屏幕快照,第一个请求仍在运行:
服务器在收到消息后都需要关闭连接,您需要提供自己的AbstractTCPClient实现,该实现将根据您的应用程序设置进行相应的操作。
您还可以尝试使用HTTP Raw Request采样器,该采样器具有更简单的配置,可能更适合您开箱即用的情况。可以使用JMeter Plugins Manager安装HTTP Raw Request采样器。
答案 1 :(得分:0)
是的,当连接不发送询问时,JMeter TCP采样器不发送数据。只需在JSR223 Sampler中使用类似的内容:
def sock = new Socket()
def host = "localhost" // change it to your host
def port = 9999 // change it to your port
sock.connect(new InetSocketAddress(host, port))
def out = new OutputStreamWriter(sock.getOutputStream())
try {
while (true) {
out.write("Yor test data here")
out.flush()
if (sock.isConnected()) {
SampleResult.setSuccessful(true)
} else {
SampleResult.setSuccessful(false)
break
}
}
}
finally {
sock.close()
}