過去数ヶ月間、私のサイト(Rails 4 with Herokuで動作しています)は何の問題もありませんでした。トラフィックは安定しており、応答時間は500ミリ秒以下です。Rails 4 Appがランダムにタイムアウトする理由を理解してください
今日は無作為に応答時間が20,000 ms以上に達しました。
私のログを見ると、私はSELECT DISTINCT COUNT
を実行するために非常に時間がかかりActiveRecordのに気づきました。実際、これは低速の負荷を引き起こしているように見えました。
(5029.1ms) SELECT DISTINCT COUNT(DISTINCT "impressions"."session_hash") FROM "impressions" WHERE "impressions"."impressionable_id" = $1 AND "impressions"."impressionable_type" = $2 [["impressionable_id", 826], ["impressionable_type", "Article"]]
私は、これは私が記事の数を表示するために使用していますが、私はわからない印象派の宝石と私のカウンターキャッシュによって引き起こされていると言いたいです。
私は今も、初めての私のログにこのエラーを見ています:
PG::DuplicatePstatement: ERROR: prepared statement "a9" already exists
何が起こっているか理解するすべてのヘルプは素晴らしいだろう。問題に関する文書を見つけることができないようです。非常に奇妙なことに、私のアプリは今何ヶ月もしっかりと動いており、今日は下り坂に入ることに決めました。
私はHerokuでRack Timeout gemも使用しています。私はこの宝石が直接的または間接的に上記のエラーを引き起こす可能性があると聞きましたが、なぜこのようなことが起こっているのか、私の頭を抱くことができます。私が提供できる他の情報や指標があれば教えてください。
1日以降の更新:
応答時間は、自分の(< 500ミリ秒)に正常に戻って行きました。そのようなランダムなスパイクがなぜ発生するのか理解できません。
そして、ちょうど参考のために、上記SELECT DISTINCT COUNT
クエリは単にセッションに固有の感想をカウントしている私の記事ショーのページにこのコードから実行されていた:あなたが用意しているので、
<%= @article.impressionist_count(filter: :session_hash) %>
有料版のHerokuを使用していますか、無料ですか? – CheeseFry
標準2X Dynoと趣味基本DB(10m行)で実行中です。@CheeseFry – Kathan
そのクエリを生成するRubyコードを投稿できますか? – spickermann