Dropwizard / Jersey HTTP Servlet连接重置但泽西资源很好

时间:2018-01-04 16:42:15

标签: java servlets jersey dropwizard

我使用泽西资源和environment.servlets().addServlet(newServlet)实现了一个API,看看哪个会更快。

两者完全相同。但是当我在两个实现上运行AB基准测试时,使用Jersey Resource工作得很好但是使用Servlet我得到apr_socket_recv: Connection reset by peer (54)

只有在遇到并发请求时才会发生这种情况:

ab -n 10000 -c 100 -k -T application/binary -p req.bin http://localhost:8142/

任何想法为什么Servlet会有这个问题? (我想使用servlet的原因是我发布的数据是原始二进制文件,使用输入/输出流更容易处理它。

1 个答案:

答案 0 :(得分:0)

我找到了原因。这是由于Keep Alive连接,我需要在响应中设置Content-Length标头。

        response.setContentLength(out.len());
        response.getOutputStream().write(out.get(), 0, out.len());
        response.getOutputStream().flush();

不要拨打response.getOutputStream().close()