我正在使用 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 不知何故未能发现响应的结束?
任何有关如何解决或调试此问题的想法将不胜感激。