JMeter TCPSampler-如何使用定期保持活动状态处理自定义协议?

时间:2018-08-02 07:02:48

标签: jmeter performance-testing

我对JMeter来说还比较陌生,但是我从事性能测试已有近十年了。

我正在使用专有的TCP协议,该协议通过现有的TCP连接定期发送保持活动状态。

我正在努力了解如何派生JMeter“线程组”来处理通过同一TCP会话接收到的TCP Keep alive。

有什么想法吗?

谢谢您的信任!

编辑:我正在使用TCPsampler,并已阅读帮助页面。我将尽力在不久之后提供一些更多的细节,关于正在发生的事情以及如何编写协议。

edit2:不幸的是,由于它是一个礼节性协议,因此我无法透露协议本身的确切性质,但这与我所面临的问题无关。

基本上,我使用第一个TCP采样器来“启动/认证”与服务器的会话。这配置了以下选项:  1. TCPClient类名:LengthPrefixedBinaryTCPClientImpl(我的协议以这种标准方式实现)  2.重新使用连接。  3.关闭连接。  4.将NoDelay设置为OFF。  5. SO_Linger:无  6.要发送的文本:协议的十六进制代码(正确)

我从第一个TCP请求中获得响应,然后我想开始进行交互,但是在会话中,服务器在中间流发送了一个keep alive,因此,偶尔在我发送请求时,我会得到一个意外的keep alive响应而是(这是一个开放的数据流)。

这就是我要解决的问题。

我尝试使用递归测试片段,以便在KeepAlive响应上,它将再次发送请求,但是无法递归测试片段(在“运行”尝试中抛出Java错误)。

我希望这会提供更多背景信息!感谢您的耐心等待(我是SO新手!)

1 个答案:

答案 0 :(得分:0)

如果有帮助,请检查以下选项:-

  

如果选择“ 重用连接”,则连接之间将共享   在同一线程中的采样器提供了完全相同的主机名   使用字符串和端口。将使用不同的主机/端口组合   不同的连接,以及不同的线程。如果同时使用“   连接”和“ 关闭连接”被选中,套接字将变为   运行采样器后关闭。在下一个采样器上,另一个套接字   将被创建。您可能需要在每个插座的末尾关闭一个插座   线程循环。

     

如果检测到错误-或未选择“ 重用连接”-   插座已关闭。下一个示例将重新打开另一个套接字。

     

以下属性可用于控制其操作:   tcp.status.prefix在状态编号之前的文本tcp.status.suffix   状态编号之后的文本tcp.status.properties名称为   属性文件,用于将状态代码转换为messagetcp.handler   TCP处理程序类(默认TCPClientImpl)-仅在未指定的情况下使用   在GUI上

有关更多详细信息:-https://jmeter.apache.org/usermanual/component_reference.html#TCP_Sampler