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

ShiningRay · 2013年10月29日 · 最后由 lifuzho 回复于 2013年11月02日 · 3405 次阅读

我部署的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也没有这种问题

何解?

共收到 13 条回复

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

增大unicorn的timeout参数试试

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

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

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

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

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

8楼 已删除

@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多次,有一次竟然可以了,之后再重启就再也不行了,非常诡异。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册