繁体   English   中英

Dropwizard / Jersey HTTP Servlet连接重置,但Jersey Resource没问题

[英]Dropwizard / Jersey HTTP Servlet Connection Reset but Jersey Resource is fine

我使用Jersey资源和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的原因是我要发布的数据是原始二进制文件,使用输入/输出流可以更轻松地在那里处理它。

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

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

而不是调用response.getOutputStream().close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM