我正在使用 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 使用的日志中显示的端口上显示“连接被拒绝”。还有其他方法可以获取真正的堆栈跟踪吗?