繁体   English   中英

Jmeter TCP采样器不循环

[英]Jmeter TCP sampler not looping

我想使用 jmeter 的 TCP 采样器对我的系统进行压力测试(我使用的是默认的 TCP 采样器和 jmeter GUI),但线程组循环计数器似乎不起作用。 当我运行我的测试线程时,只发送一条消息。 几乎感觉 jmeter 在开始发送其他消息之前正在等待服务器的响应,除非在我的情况下服务器不应该发送任何类型的确认。

我正在发送文本消息并使用默认的 tcp 采样器类,并向采样器添加了响应断言,告诉它忽略响应(我希望这能解决我的问题)。 我也确定我的服务器不是问题,并且消息的格式是我的服务器期望的(用空行表示消息结束)

我非常简单的线程组

我非常简单的 TCP 采样器

开始我的测试后的结果

正如您从我的第三张图片中看到的,当我开始测试时,它会发送一条消息并挂起。 我的服务器只收到第一条消息。 由于我是 jmeter 的新手,任何建议都会有所帮助。 我假设我可以通过默认的 TCP 采样器完成我需要的东西,如果不是这种情况,有人能指出我正确的方向吗?

查看您的屏幕截图,第一个请求仍在运行:

在此处输入图片说明

您的服务器需要在收到您需要提出自己的AbstractTCPClient实现的消息后关闭连接,该实现将根据您的应用程序设置进行操作。

您还可以试用HTTP 原始请求采样器,它具有更简单的配置,可能更适合您的开箱即用用例。 可以使用JMeter 插件管理器安装 HTTP 原始请求采样

在此处输入图片说明

是的,当连接不发送时,JMeter TCP 采样器不发送数据。 只需在 JSR223 采样器中使用类似的东西:

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()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM