Netty + JMeter,重用连接时出错

时间:2012-05-14 21:10:28

标签: java jmeter netty

我使用Netty构建了一个简单的TCP服务器,我想用JMeter对它进行基准测试。我正在使用JMeter TCP Sampler,使用BinaryTCPClientImpl类名来发送字节。我检查过“没有延迟”和“重用连接”。我假设这些是SO_NODELAY和SO_REUSEADDR。我正在运行75个线程,每个线程执行1000个TCP请求。我一直看到大约11%的请求失败了:

  

500 java.net.SocketException:软件导致连接中止:套接字写入错误

如果我取消选中“重新连接”,那么所有75,000个请求都会成功而没有一个错误,但吞吐量只有它的33%。

我是否需要使用Netty服务器来防止这些错误?

1 个答案:

答案 0 :(得分:0)

我应该注意我的服务器是这样的:接受连接,接收一些数据,发送一些数据,一旦数据发送关闭连接。 JMeter文档说TCP Sampler会关闭连接,除非选中“重用套接字”,所以我猜这不是SO_REUSEADDR。我假设在某些情况下客户端发送数据,接收数据,在服务器关闭套接字之前,客户端尝试再次发送数据,然后服务器关闭套接字,JMeter认为请求失败。

因此,解决方案是不检查“重用地址”。关闭套接字每个请求都是预期的行为,因为我的客户端相对不经常地进行通信。