【问题标题】:How to findout what cause unicorn workers timeout如何找出导致独角兽工人超时的原因
【发布时间】:2013-08-19 06:42:37
【问题描述】:

人们一直声称我的网站总是出现在某些页面上。我检查了 unicorn 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

有很多这样的错误信息。

然后我去 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)

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

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

更新:

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

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

【问题讨论】:

  • 可能是您的网站太忙,有时页面加载时间超过600毫秒? Sql 执行只是整个响应的一部分。或者你能不能把独角兽的超时时间设置一个更大的值再试一次?
  • @Bigxiang,是600s而不是600ms。我们有上传功能,所以我们需要配置这么长时间,以防连接速度慢。
  • 非常抱歉,我看错了。我阅读了独角兽的文档,但没有发现任何有用的东西。有人提到他们在净流量或cpu高或使用低版本的gem mysql时遇到问题。
  • @Bigxiang,感谢您的信息。我们用gem mysql2 0.3.7,我试试看是不是和版本有关。

标签: ruby-on-rails logging nginx timeout unicorn


【解决方案1】:

我正在使用 Rack::Timeout 在独角兽之前超时。 Unicorn 超时使用 kill -9,我认为这不会给你任何方法来做任何事情。

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 2014-12-31
    • 2012-09-17
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多