HTTP 502“;“坏网关”writev()失败(104:对等方重置连接)

HTTP 502“;“坏网关”writev()失败(104:对等方重置连接),http,nginx,jetty,dropwizard,Http,Nginx,Jetty,Dropwizard,我们有上面的配置,其中服务器处理多达100个并发请求,其中一些请求相当大:单个请求的负载高达3-4MB(不使用多部分等) 这很好,但偶尔我们会从nginx得到一个错误: HTTP 502“坏网关” 在访问日志中,我们看到 writev()在向上游发送请求时失败(104:对等方重置连接) 或者:recv()在从上游读取响应头时失败(104:由对等方重置连接) Java(Jetty/Dropwizard)服务器上没有错误 我们假设这是因为Jetty过早地关闭了连接,可能在接收数据完成之前就发送了响应

我们有上面的配置,其中服务器处理多达100个并发请求,其中一些请求相当大:单个请求的负载高达3-4MB(不使用多部分等)

这很好,但偶尔我们会从nginx得到一个错误:
HTTP 502“坏网关”

在访问日志中,我们看到

writev()在向上游发送请求时失败(104:对等方重置连接)

或者:
recv()在从上游读取响应头时失败(104:由对等方重置连接)

Java(Jetty/Dropwizard)服务器上没有错误

我们假设这是因为Jetty过早地关闭了连接,可能在接收数据完成之前就发送了响应

我们试图增加nginx上的缓冲区大小:

客户最大尺寸为24M;
客户端\主体\缓冲区\大小128k;

并降低了keep_alive空闲超时(60->25秒),以避免jetty提前一点关闭它(30秒超时):

proxy_http_版本1.1;
代理集头连接“”;
保持激活超时25

这没有改变。 标题不应该太大。99.9%的请求按预期工作(所有请求都类似)

奇怪的是,在升级Dropwizard(1.2.2->1.3.5)和Jetty(9.4.7->9.4.11)之后,错误发生的频率更高

我想知道接下来的调查步骤是什么? 可能发生了什么/我们可以尝试解决的陷阱是什么?

可能相关参考:可能相关资源: