3

最近、Heroku で H12 リクエストのタイムアウトが発生しましたPG::Error SSL SYSCALL error: EOF detected

スタック トレースの関連部分は次のとおりです。

2013-04-05T22:07:02+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path=/things/3.json host=things.herokuapp.com fwd="184.72.72.117" dyno=web.2 connect=1ms service=30003ms status=503 bytes=0):
2013-04-05T22:07:58+00:00 app[web.1]:   vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/connection_adapters/postgresql_adapter.rb:294:in `dealloc'
2013-04-05T22:07:58+00:00 app[web.1]:   vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/connection_adapters/postgresql_adapter.rb:277:in `clear'
2013-04-05T22:07:58+00:00 app[web.1]: PG::Error (SSL SYSCALL error: EOF detected
2013-04-05T22:07:58+00:00 app[web.1]:   vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.11/lib/active_record/connection_adapters/postgresql_adapter.rb:339:in `clear_cache!'

Heroku のドキュメントには、このエラーの一般的な原因がリストされています。Resque や Unicorn を使用していないため、これはネットワーク パーティションが原因のようです。

同じドキュメントには、「Heroku がクラッシュを検出すると、その dyno を強制終了し、接続を再確立する新しい dyno を開始する」と記載されています。これは私の経験ではありませんでした。アプリケーションは、実行したときにのみ回復しましたheroku restart。私はこのエラーをアプリケーション レベルで処理し、Heroku の dyno 管理に頼らずに解決したいと考えています。

「EOF が検出されました」エラーをキャッチし、アプリケーションが再接続するまで自動的に再試行する方法はありますか?

4

0 に答える 0