6

django アプリの heroku ログで web dyno から取得している Heroku エラー R14 (メモリ クォータを超えました) エラーを診断するためのアドバイスや詳細情報があるかどうかを確認したかったのです。

ログの例は次のとおりです。

heroku[web.1]: source=web.1 dyno=heroku.16810889.deec8406-c082-445d-a047-d0026849fd5e sample#load_avg_1m=0.01 sample#load_avg_5m=0.03 sample#load_avg_15m=0.04
heroku[web.1]: source=web.1 dyno=heroku.16810889.deec8406-c082-445d-a047-d0026849fd5e sample#memory_total=512.06MB sample#memory_rss=511.84MB sample#memory_cache=0.00MB sample#memory_swap=0.22MB sample#memory_pgpgin=380186624pages sample#memory_pgpgout=364599pages
heroku[web.1]: Process running mem=512M(100.0%)
heroku[web.1]: Error R14 (Memory quota exceeded)

いくつかの背景情報、観察、および私が試したこと:

  1. ほとんどのメモリは memory_rss によって消費されています (heroku の「memory_rss」を Google 検索してもあまりヒットしません)。
  2. Web dyno の数をスケーリングまたはスケーリング解除しても効果はなく、新しい各 Web dyno はすぐに 512M (100%) に達します。ただし、常に 100% で停止し、それ以上にはなりません。dyno を再起動しても、問題が軽減されるのは 10 ~ 15 分間だけです。
  3. この問題は Web dyno にのみ影響します。私は 1 つのセロリ スケジューラと 1 つのセロリ ワーカー dyno を正常に実行しています。celery.1 メモリの合計は 100MB 前後で推移しています。
  4. New Relic のインスタンス ダッシュは次のとおりです。

ここに画像の説明を入力

また、別の Heroku インスタンス (ステージング サーバー) でまったく同じコードを実行しましたが、メモリが 160MB を超えることはありませんでした。したがって、サーバー固有のようです (少なくともある程度)。

次にどこを見るべきかアドバイスはありますか?他に役立つ情報を教えてください。ありがとう

4

1 に答える 1

1

少しばかげていますが、アプリがユーザー プロファイルのアバターに使用している django-avatar に問題を突き止めました。アプリ内の任意のページの応答時間のほぼ 50% がテンプレートの {% block header %} で費やされましたが、これは意味がなく、{ avatar } タグであることが判明しました。

AVATAR_STORAGE_DIR が settings.py で S3 用に正しく構成されていませんでした

于 2013-10-08T16:17:02.133 に答える