毎月約950kページビューのDjangoサイト(Webfactionでホストされています)がクラッシュしているため、デバッグ方法がわかりませんでした。予期せぬ間隔(1日に約1回の平均で、毎日同じ時刻では平均しない)で、サイトへのすべての要求がハングアップ/タイムアウトになり、Apacheを再起動するまでサイトが完全にアクセスできなくなります。これらのリクエストは、フロントエンドのアクセスログに499として表示されますが、アプリケーションのログには表示されません。これらの謎のジャンゴクラッシュを調べるにはどうしたらいいですか?
サーバログ(django-timelogで生成されたログを含む)をポーリングすると、サイトがダウンする直前にページが表示されるパターンが見つからないようです。最近のクラッシュでは、サイトがダウンする直前にヒットしたすべてのページは、かなり単純で、残りの時間はうまくいくように見えるテンプレートを使用して、標準のレンダリング応答操作のようです。クラッシュの直前のリクエストは、タイムロッグによっては時間がかかるようには見えず、負荷テストによって意図的にクラッシュを再現することはできませんでした。
Webfactionによると、許可されたメモリ使用量を超えてしまうケースはありません。注意すべき点の1つは、サイトをバックアップするときに、データベースが再起動されていないことです(app/Apacheのみ)。
このような定期的な問題を調査するにはどうすればよいですか?どこかにコードの行がぶら下がっていなければならないようです - それを見つけるプロセスについての提案はありますか?
サイトにはどのような外部依存関係がありますか? APIに到達できないことがありますか?あなたはどこかで無限ループをしていますか?アプリの複雑さに応じて、さまざまなものがあります。 – Kekoa
webfactionでは、Apacheよりもむしろ、gunicornにもっと喜びました。これを試してみるのもいいかもしれません。必要な時には、選択したモジュールのすべてのコード行をトレースする機能を含めて、ツールのデバッグ方法がますます増えています。 – Marcin