【问题标题】:Jmeter TCP sampler not loopingJmeter TCP采样器不循环
【发布时间】:2019-07-12 22:18:37
【问题描述】:

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

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

My very simple thread group

My very simple TCP Sampler

The result after starting my test

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

【问题讨论】:

    标签: java tcp jmeter


    【解决方案1】:

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

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

    您也可以试用HTTP Raw Request 采样器,它具有更简单的配置,可能更适合您开箱即用的用例。可以使用JMeter Plugins Manager 安装 HTTP 原始请求采样器。

    【讨论】:

    • 是的,在下一条消息开始之前,似乎确实需要来自服务器的某种确认。我按照您的建议尝试了 HTTP 原始请求,但这似乎也有相同的条件。除了 jmeter.apache.org/usermanual/jmeter_tutorial.html 之外,您能否指出我实现自定义 jmeter 采样器或插件的任何资源?
    【解决方案2】:

    是的,当连接不发送询问时,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()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多