Nginx 错误 readv() failed (104: Connection reset by peer) while reading upstream

Nginx error readv() failed (104: Connection reset by peer) while reading upstream

我们有 nginx 版本:nginx/1.6.2 和 tomcat 7 作为设置,并在我们的 nginx 日志中看到这些错误。能否解释一下这个错误的含义,以及我们是否需要更改设置中的任何设置才能使其正常工作。

2015/10/06 11:05:00 [error] 1005#0: *3026220 readv() failed (104: Connection reset by peer) while reading upstream, client: 10.144.106.221, server: _, request: "GET /exelate/usersync?
segment=3460,3461,3462,3463,3466,1475,3482,3485,8129,1443,8128,1444,1438,1440,1442,5174,5173,3457,3455,3456,3453,3454,3451,1447,1448,3452,3449,145

我们增加了 tomcat 的 Http header 大小,此问题已解决。我们设置了 maxHttpHeaderSize="65536" 以便 tomcat 可以接受 64KB headers 默认值为 8KB。

在我的案例中,这是因为 Netflix Zuul:

当我尝试上传超过 1 MB 的文件时,我从 nginx 日志中收到此消息:

readv() failed (104: Connection reset by peer) while reading upstream

我的网络应用程序使用 Nginx 并重定向到 Netflix Zuul。所以我需要在Zuul的properties.yml中设置这个配置

servlet:
multipart:
  max-request-size: 10MB
  max-file-size: 10MB

我的问题解决了。