我似乎无缘无故地从独角兽工人那里得到间歇性超时,我需要一些帮助来调试实际问题。更糟糕的是,它可以处理大约 10 - 20 个请求,然后 1 个将超时,然后再有 10 - 20 个请求,同样的事情将再次发生。
我创建了一个开发环境来说明这个特定问题,所以除了我的之外没有任何流量。
堆栈是 Ubuntu 14.04、Rails 3.2.21、PostgreSQL 9.3.4、Unicorn 4.8.3、Nginx 1.6.2。
问题
我将详细描述它不起作用的时间。
我通过浏览器请求一个 url。
Started GET "/offers.xml?q%5bupdated_at_greater_than_or_equal_to%5d=2014-12-28T18:01:16Z&q%5bupdated_at_less_than_or_equal_to%5d=2014-12-28T19:30:21Z" for 127.0.0.1 at 2014-12-30 15:58:59 +0000
Completed 200 OK in 10.3ms (Views: 0.0ms | ActiveRecord: 2.1ms)
Run Code Online (Sandbox Code Playgroud)
如您所见,请求在 10.3 毫秒内成功完成,响应状态为 200。
然而,浏览器挂了大约 30 秒,Unicorn 杀死了工人:
E, [2014-12-30T15:59:30.267605 #13678] ERROR -- : worker=0 PID:14594 timeout (31s > 30s), killing
E, [2014-12-30T15:59:30.279000 #13678] ERROR -- : reaped #<Process::Status: pid 14594 SIGKILL (signal 9)> worker=0
I, [2014-12-30T15:59:30.355085 #23533] …
Run Code Online (Sandbox Code Playgroud)