我正在使用 JMeter 对我们的 SMTP 服务器进行负载测试,使用 TCP 采样器(BinaryTCPClientImpl 类)来触发 HELO,等待 30 秒,然后退出。
SMTP 服务器接受 HELO 并做出相应响应,JMeter 记录正确的响应,但是它似乎没有找到响应,而是遇到响应超时并显示请求 500 失败。
在 JMeter 日志中它说:
ERROR - jmeter.protocol.tcp.sampler.TCPSampler: org.apache.jmeter.protocol.tcp.sampler.ReadException:
at org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl.read(BinaryTCPClientImpl.java:137)
at org.apache.jmeter.protocol.tcp.sampler.TCPSampler.sample(TCPSampler.java:350)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:416)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl.read(BinaryTCPClientImpl.java:123)
尽管它设法记录了预期的响应!
我猜 JMeter 不知何故未能发现响应的结尾?
任何有关如何解决或调试此问题的想法都将不胜感激。
最佳答案
如果您不定义 EOM byte , 它显示为 until the end of the stream .由于流不会结束,它会超时。您必须为您使用的协议(protocol)正确设置 EOM 字节。
关于tcp - JMeter TCP Sampler 错误地报告 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10683853/