私は Rails を初めて使用し、最初のアプリを Heroku (無料利用枠) にデプロイしました。New Relic の無料トライアルを設定し、可用性の監視を /register/ URL に 1 分ごとに ping するように設定しました。Rails 3.2.13 と Ruby 1.9.3 を実行しています。
私のアプリには基本的にユーザーもリクエストもありません (1 分あたり 2 つのリクエストで、ほとんどが NewRelic からのものです)。バックグラウンド サービスや外部依存関係はありません。データ モデルはシンプルで、100 ミリ秒以上かかるクエリはありません。
数時間ごとに正確に 15 分間完全に停止しています。
Heroku は 1500 行のログしか保持しないため、各インシデントのデータはありませんが、2 番目のブリップのログを次に示します (私のグラフは -0400、Heroku は UTC です)。
完全なログ: https://gist.github.com/jbinto/5495226/raw/ba61ec16d9655287466cfbb9328f59c0171b2df7/heroku.log
概要
- 00:56:21 から 01:00:21:通常どおり、1 分間に 1 つのリクエストを送信します。
- 01:01:55: 受信した最後のリクエストは処理されていないようです。
- 01:02:21 から 01:17:21: 54 H12 (要求タイムアウト) エラー。
- 01:17:25: PG::Error (SSL SYSCALL エラー: EOF が検出されました) (余談: Heroku のログ ステートメントの順序が間違っていることに気付きました。奇妙なことです。)
この PG::Error は私の問題の原因ですか、それとも単なる症状ですか? 一部のグーグルは、スターター層での Postgres タイムアウトに関する議論と、プロダクション層を使用しないいくつかの警告を示しています: https://groups.google.com/forum/?fromgroups=#!topic/heroku/a6iviwAFgdY
詳細 StackOverflow: Postgres + Heroku SSL SYSCALL エラー
自動再接続に関する Rails チケット: https://github.com/rails/rails/issues/9421
これは良い手がかりのように見えますが、誰もこれを解決していないようです. Heroku の Postgres に不安定性があるようで、Rails<4 はこれからうまく回復しません。
- 01:17:26 から 01:17:27: 58 の GET リクエストが「処理されました」(これらはキューに入れられたリクエストだと思いますか? 30 秒のタイムアウトのために、クライアントは長い間消えています。なぜこれらのリクエストがまだ処理されているのですか?)
- 01:17:51:すべて正常に戻りました。
何か案は?Heroku のサポート チケットを開くつもりですが、無料のユーザーとしてどこにでも行けるかどうかはわかりません。