[英]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.