运维 谁遇到过 unicorn 传不回数据导致超时的问题

ShiningRay · October 29, 2013 · Last by lifuzho replied at November 02, 2013 · 3893 hits

我部署的 rails 应用,发现经常会出现 504 超时

操作系统是 Ubuntu 12.04 LTS Nginx 是 apt-get 下来的 1.1.19 Ruby 1.9.3-p448 Rails 3.2.15 unicorn 4.6.3

无论 nginx 中使用 unicorn 的 unix socket 作为 upstream,还是使用 unicorn 绑定的 http 端口作为 upstream,都常会出现超时的问题,检查 production.log 会发现请求已经处理完毕

而当我把 unicorn 替换成 thin 开启同样数量的进程,并配置 nginx 就没有任何问题 更新:使用 Puma 也没有这种问题

何解?

看一下 unicorn 的 log,是不是有 timeout kill 的情况

增大 unicorn 的 timeout 参数试试

也有可能是出异常了,然后异常的处理代码把输出流搞乱了

#1 楼 @allenwei 检查过日志没有这个情况

#2 楼 @hooopo nginx 是 60s 超时,unicorn 设的是 180s

#3 楼 @luikore 没有看到异常啊

#3 楼 @luikore 关键是 thin 没问题啊

8 Floor has deleted

@ShiningRay nginx 60s 有问题啊,unicorn 处理超过 60s 的话,nginx 就返回 504 了。

#8 楼 @wxianfeng production.log 日志里面 rails 进程没有处理超过 1s 的请求,换用 thin 就没问题了

昨晚正好遇到和楼主同样的问题,nginx 搭配 unicorn 一直报 504 Gateway Timout 的错,换成 Thin 之后立马好了。unicorn server 和 nginx 的日志显示都很正常,设置超时什么的也不起作用,不知道是何原因。

#10 楼 @lifuzho 我还没找出问题,搜也搜不到,你用的是什么服务器?

#10 楼 @lifuzho 我现在在用 puma

#12 楼 @ShiningRay 实在是找不到原因,临时用了 Thin,网上搜索出来的答案显然都和我们遇到的情形不一样。我中间重启过 nginx 和 unicorn 多次,有一次竟然可以了,之后再重启就再也不行了,非常诡异。

You need to Sign in before reply, if you don't have an account, please Sign up first.