我对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新手!)
答案 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