JMeter TCP采样器无法识别流的结束

时间:2012-06-28 13:40:03

标签: sockets tcp jmeter

我正在尝试使用TCP Sampler运行一个简单的测试

使用默认TCPClient类时,在响应超时时间过后,我从服务器收到正确的响应,然后在采样器结果中收到错误500:

  

响应代码:500响应消息:   org.apache.jmeter.protocol.tcp.sampler.ReadException:

似乎JMeter无法识别消息字符的结尾(服务器发送 \ r \ n )。

如何配置JMeter以查看EOM?


我尝试使用BinaryTCPClientImpl,并在 Jmeter.properties 中设置 tcp.BinaryTCPClient.eomByte = 13 ,但binaryTCPClient需要HEX数据,而我发送人类可读的字符串,它仍然忽略了eomByte ......

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

发现问题。

在某些情况下,那些服务器没有发送\ r \ n。 服务器修复后,一切都开始工作了。

答案 1 :(得分:0)

我遇到了相同的行为,并检查了提供的响应(在服务器端消息末尾发送\ r \ n \在gui中设置 eol字节值选项),但是对我没用。

我的解决方案:在this question之后,我发现\ meter是Jmeter在TCP采样器中期望的eol字符。当我的服务器用\ 0终止消息时-在Jmeter中接收到该消息。

更多参考文献: Jmeter documentation(TCPClientImpl一章-讨论tcp.eolByte的地方)。

某些选项:如果消息的大小恒定,则可以检查LengthPrefixedBinaryTCPClientImpl(请参阅this discussion)。

答案 2 :(得分:-2)

直到收到EOF,TCP采样器才会返回。 在TCP采样器上设置自己的EOF字节值。 服务器在EOF字节值的末尾发送流。