【问题标题】:Jmeter: TCP Sampler error: 500 ReadException: Error reading from server, bytes read: 0Jmeter:TCP 采样器错误:500 ReadException:从服务器读取错误,读取的字节数:0
【发布时间】:2018-10-04 13:25:58
【问题描述】:

在检查来自 Jmeter TCP Sampler 的 TCP 连接时,我们遇到以下错误:

Response code: 500
Response message: org.apache.jmeter.protocol.tcp.sampler.ReadException: Error reading from server, bytes read: 0

我们尝试更改 EOL、连接和响应超时、重用连接和关闭连接设置,但没有成功。

Jmeter TCP 采样器日志:

2018-04-24 12:09:09,740 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2018-04-24 12:09:09,741 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2018-04-24 12:09:09,745 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2018-04-24 12:09:09,755 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : DS Requests
2018-04-24 12:09:09,756 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group DS Requests.
2018-04-24 12:09:09,764 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2018-04-24 12:09:09,765 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=5 perThread=5000.0 delayedStart=false
2018-04-24 12:09:09,765 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2018-04-24 12:09:09,765 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2018-04-24 12:09:09,766 INFO o.a.j.t.JMeterThread: Thread started: DS Requests 1-1
2018-04-24 12:09:09,767 INFO o.a.j.p.t.s.TCPClientImpl: Using platform default charset:windows-1252
2018-04-24 12:09:09,767 INFO o.a.j.p.t.s.TCPSampler: Using eolByte=10
2018-04-24 12:09:09,787 ERROR o.a.j.p.t.s.TCPSampler: 
org.apache.jmeter.protocol.tcp.sampler.ReadException: Error reading from server, bytes read: 0
    at org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl.read(TCPClientImpl.java:131) ~[ApacheJMeter_tcp.jar:3.3 r1808647]
    at org.apache.jmeter.protocol.tcp.sampler.TCPSampler.sample(TCPSampler.java:403) [ApacheJMeter_tcp.jar:3.3 r1808647]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:498) [ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424) [ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255) [ApacheJMeter_core.jar:3.3 r1808647]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source) ~[?:1.8.0_144]
    at java.net.SocketInputStream.read(Unknown Source) ~[?:1.8.0_144]
    at java.net.SocketInputStream.read(Unknown Source) ~[?:1.8.0_144]
    at org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl.read(TCPClientImpl.java:114) ~[ApacheJMeter_tcp.jar:3.3 r1808647]
    ... 5 more
2018-04-24 12:09:09,788 INFO o.a.j.t.JMeterThread: Thread is done: DS Requests 1-1
2018-04-24 12:09:09,788 INFO o.a.j.t.JMeterThread: Thread finished: DS Requests 1-1
2018-04-24 12:09:09,789 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2018-04-24 12:09:09,789 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)

请建议如何解决此问题。

【问题讨论】:

  • 您使用了多少个用户/线程?由此我怀疑它不是JMeter方面的问题。看起来您需要检查服务器日志是否有错误。还要检查服务器何时可以抛出此类错误stackoverflow.com/questions/30745350/…
  • 如果这种情况发生在一个用户身上,那么您发送的内容就是错误的;服务器不喜欢它,并且在这种情况下没有优雅地处理错误。如果它发生在一定数量的用户之后,那么您可能会用完服务器上的某些资源(端口?)
  • 这也发生在 1 个用户身上。

标签: java wcf tcp jmeter tcpclient


【解决方案1】:

使用 TCP 采样器检查连接不是最好的主意,我建议改用 JSR223 SamplerSocket 类:

def sock = new Socket()
def host = "example.com" // change it to your host
def port = 80 // change it to your port
def timeout = 1000 // change it to your timeout (in milliseconds)
sock.setSoTimeout(1000)
sock.connect(new InetSocketAddress(host, port))

if (sock.isConnected()) {
    log.info('Connection established')
    SampleResult.setSuccessful(true)
}
else {
    log.info('Server is not listening')
    SampleResult.setSuccessful(false)
}

有关使用 Groovy 脚本增强 JMeter 测试的更多信息,请参阅 Apache Groovy - Why and How You Should Use It 文章。


在大多数情况下,使用HTTP Raw Request 插件比使用 TCP 采样器要容易得多。

【讨论】:

  • 谢谢 Dmitri,现在 JSR223 的连接测试很好。我还需要通过发送一些 xml 内容来检查 TCP 请求并检查来自服务器的响应。你能帮我吗。
猜你喜欢
  • 1970-01-01
  • 2014-04-10
  • 2015-11-25
  • 2016-02-09
  • 2016-02-04
  • 2017-01-15
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多