跟踪导致超时的请求

时间:2016-01-24 20:34:32

标签: ruby-on-rails ruby-on-rails-4 rack unicorn

我在生产日志中遇到了不少这些内容:

E, [2016-01-24T20:34:44.862096 #21631] ERROR -- : reaped #<Process::Status: pid 23077 SIGKILL (signal 9)> worker=10
E, [2016-01-24T20:34:44.862282 #21631] ERROR -- : worker=12 PID:23064 timeout (61s > 60s), killing
E, [2016-01-24T20:34:44.876932 #21631] ERROR -- : reaped #<Process::Status: pid 23064 SIGKILL (signal 9)> worker=12
I, [2016-01-24T20:34:44.895914 #23619]  INFO -- : worker=12 ready

我同时使用New Relic和Honeybadger来追踪错误,但是自从Unicorn工作人员被杀之后,我无法弄清楚请求花了这么长时间。

我尝试实现this博文中描述的中间件,但是在本地开发中测试它时会引发以下错误:

I, [2016-01-24T21:22:08.453846 #63197]  INFO -- : [cc042b92-0530-4c9c-9503-73bba529fe20] Completed 200 OK in 1061ms (Views: 1016.8ms | ActiveRecord: 3.8ms)
F, [2016-01-24T21:22:08.458914 #63197] FATAL -- : [cc042b92-0530-4c9c-9503-73bba529fe20] 
ThreadError (killed thread):
  config/initializers/log_before_timeout.rb:19:in `run'
  config/initializers/log_before_timeout.rb:19:in `call'

我该怎么做才能解决这个问题?或者,有没有更好的方法来检查这个?

BTW 我没有使用默认的rails服务器(webbrick)在本地测试它。

1 个答案:

答案 0 :(得分:0)

使用它来运行在 ensure 块上的线程而不是 thr.run

Thread.current.run