1

我正在使用 Unicorn 在 Heroku 运行 Rails 3.2.13 应用程序,我在日志中似乎随机且经常(例如,每分钟几次)出现 unicorn 错误,它告诉以下内容,但仅此而已:

Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.153875 #21] ERROR -- : app error: undefined method `each' for nil:NilClass (NoMethodError) 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157119 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/http_response.rb:60:in `http_response_write' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157292 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/http_server.rb:562:in `process_client' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157367 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/http_server.rb:632:in `worker_loop' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157443 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/gems/newrelic_rpm-3.6.2.96/lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb:22:in `call' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157523 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/gems/newrelic_rpm-3.6.2.96/lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb:22:in `block (4 levels) in <top (required)>' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157600 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/http_server.rb:500:in `spawn_missing_workers' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157724 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/http_server.rb:142:in `start' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157802 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/bin/unicorn:126:in `<top (required)>' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.157870 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/bin/unicorn:23:in `load' 
Jul 08 17:12:41 my_app app/web.1:  E, [2013-07-08T14:12:41.158027 #21] ERROR -- : /app/vendor/bundle/ruby/1.9.1/bin/unicorn:23:in `<main>'

稍微调查一下 Unicorn 源,似乎应用程序返回的响应中的主体为 nil,这会导致崩溃。但是我没有从应用程序中得到任何关于此的输出,即使根本没有记录任何请求,这似乎也会发生。我尝试将调试打印添加到机架中间件,但根本没有打印。

我对 Unicorn 和 Rack 不是很有经验,所以我正在询问如何进一步调试它的提示。

在网上寻找类似问题时,我发现:http: //jeffrafter.tumblr.com/post/8459308338/recalcitrant-unicorns这似乎是完全相似的情况。我尝试了 telnet 方法,heroku run但似乎在 Unicorn 使用的日志中显示的端口上显示“连接被拒绝”。还有其他方法可以获取真正的堆栈跟踪吗?

4

2 回答 2

0

这也发生在我身上。原来是memcached store 满了。尝试刷新 Rails 缓存。

于 2014-03-14T15:45:02.143 回答
0

它看起来像堆栈跟踪中的 NewRelic 代码。您可以尝试关闭 NewRelic 以查看是否可以解决错误。

于 2013-08-17T07:13:08.280 回答