HTTP 502“错误的网关” / writev()失败(104:对等方重置连接)

时间:2018-08-15 19:14:07

标签: http nginx jetty dropwizard

enter image description here

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

这工作正常,但有时我们会从nginx收到错误消息: HTTP 502 "Bad Gateway"

在访问日志中,我们看到

writev() failed (104: Connection reset by peer) while sending request to upstream

或:recv() failed (104: Connection reset by peer) while reading response header from upstream

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

我们认为这是由于Jetty太早关闭连接而造成的,也许甚至在接收数据完成之前就发送了响应?!

我们尝试增加nginx上的缓冲区大小: client_max_body_size 24M; client_body_buffer_size 128k;

并降低了keep_alive空闲超时时间(60-> 25秒),以避免码头提前关闭它的情况(30秒超时): proxy_http_version 1.1; proxy_set_header Connection ""; keepalive_timeout 25;

这没有改变。 标头不应太大。和99.9%的请求均按预期方式工作(所有请求均相似)。

一个奇怪的事情是,在升级Dropwizard(1.2.2-> 1.3.5)和Jetty(9.4.7-> 9.4.11)之后,错误发生率提高了20倍。

我想知道下一步应该怎么做? 可能发生了什么/我们可以尝试解决的陷阱?

0 个答案:

没有答案