小编Cat*_*ong的帖子

如何找出导致独角兽工人超时的原因

人们一直声称我的网站总是出现在某些页面上。我检查了独角兽 stderr 日志,发现了许多超时错误,例如:

E, [2013-08-14T09:27:32.236478 #30027] ERROR -- : worker=5 PID:11619 timeout (601s > 600s), killing
E, [2013-08-14T09:27:32.252252 #30027] ERROR -- : reaped #<Process::Status: pid=11619,signaled(SIGKILL=9)> worker=5
I, [2013-08-14T09:27:32.266141 #4720]  INFO -- : worker=5 ready
Run Code Online (Sandbox Code Playgroud)

有很多这样的错误信息。

然后我转到 rails 生产日志,通过搜索 unicorn 错误时间减去 601s 来找到确切的请求。这些超时请求,都在页面渲染阶段窒息。这些请求的sql已经完成了。它永远不会结束:

Processing by XXXController#index as HTML
  Rendered xxx/index.html.erb within layouts/application (41.4ms)
  Rendered shared/_sidebar.html.erb (200.9ms)
Run Code Online (Sandbox Code Playgroud)

没有完整。这些请求中的大多数都成功地处理了。我不知道为什么在随机时间,它挂在那里。

我不知道是什么原因造成的。谁能告诉我如何找到导致独角兽工人超时的真正原因?

更新:

我们使用 NSC 将请求和响应传输给独角兽。并且为了尝试改善超时问题,我们在 NSC 和 unicorn 之间添加了 nginx。事实证明独角兽工人超时仍然发生,并且每个超时都与 nginx 错误日志中的 nginx 上游超时相匹配。

有谁知道独角兽的TCP连接是否存在某种瓶颈?

logging timeout ruby-on-rails nginx unicorn

5
推荐指数
1
解决办法
2204
查看次数

标签 统计

logging ×1

nginx ×1

ruby-on-rails ×1

timeout ×1

unicorn ×1