Heroku で Unicorn を使用して Rails 3.2.13 アプリを実行していますが、一見ランダムに、非常に頻繁に (たとえば、1 分間に数回) 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 であり、それがクラッシュの原因になっているようです。しかし、これに関するアプリからの出力は得られません。これは、リクエストがまったくログに記録されていない場合でも発生するようです。ラック ミドルウェアにデバッグ プリントを追加しようとしましたが、まったく出力されません。
私はユニコーンとラックの経験があまりないので、これをさらにデバッグする方法のヒントを求めています。
オンラインで同様の質問を探しているときに、http: //jeffrafter.tumblr.com/post/8459308338/recalcitrant-unicornsを見つけましたが、これはまったく同じような状況のようです。telnet のアプローチを試してみましたheroku run
が、Unicorn が使用するログに示されているポートで「接続が拒否されました」と表示されているようです。実際のスタック トレースを取得する他の方法はありますか?