104:通过对等方重置连接:nginx +彩虹+超过1 mb的上传

时间:2012-10-29 15:14:19

标签: ruby-on-rails nginx unicorn unix-socket rainbows

我正在运行ThreadPool rainbows + nginx(unix socket)

在大文件上传时,我在nginx错误日志中得到以下内容(应用程序日志中没有任何内容):

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

浏览器收到回复:

413 Request Entity Too Large

为什么会这样?

  • “client_max_body_size 80M;”在nginx
  • 中设置http和服务器级别(以防万一)
  • nginx通过unix套接字(上游套接字+位置@ proxy_pass)与彩虹进行通信
  • 我在其他日志中看不到任何内容。我检查过:
    • 彩虹日志
    • 领班日志
    • 申请日志
    • dmesg和/ var / log / messages
  • 上传文件时会发生这种情况〜> 1 MB大小

3 个答案:

答案 0 :(得分:2)

ECONNRESET(由对等方重置连接)错误意味着后端应用程序不正确地关闭了连接。如果后端应用程序死亡,通常会发生这种情况。由于分段错误,或被OOM killer杀死。要找出确切的原因,您必须检查后端日志(如果有)和/或系统日志。

答案 1 :(得分:1)

也许您将client_max_body_size设置到您的nginx.conf,将身体的大小限制为1Mb,例如

client_max_body_size 1M;

在这种情况下,您需要将其删除以允许上传超过1M的文件。

答案 2 :(得分:1)

原来,Rainbows有一个名为client_max_body_size的配置选项,默认为1 MB 选项为documented here

如果启用此选项,Rainbows将413以静默方式请求大量请求。除非你在它前面运行一些东西,否则你可能不会知道它正在破裂。

Rainbows! do
  # let nginx handle max body size
  client_max_body_size nil 
end