1

RESTful API を提供する Apache2 と Django (mod_wsgi) のセットアップがあります。これには一連の自動テストがあり、1000 件までの API リクエスト (純粋な http GET/POST/PUT/DELETE) を順番に実行します。

問題は、約 80 件のリクエストごとに、正確に 5 秒または 10 秒の奇妙なラグ/タイムアウトが発生することです。ここでタイムスタンプの例を参照してください。

Request 1:  2013-08-30T03:49:20.915
Response 1: 2013-08-30T03:49:30.940
Request 2:  2013-08-30T03:50:32.559
Response 2: 2013-08-30T03:50:37.597

なぜこれが起こるのか分かりません。キープアライブ オフ (Django の推奨セットアップ設定) の apache 構成がありますが、それ以外は Ubuntu 12.04 LTS の標準インストールです。

ウェブサーバーと同じサーバーからテストを実行しています。最初はこれがある種の DNS キャッシュだと思っていましたが、要求しているホスト名を /etc/hosts に追加しましたが、問題は解決しません。

この遅延/タイムアウトが発生すると、システムはアイドル状態になり、CPU とメモリが大量に発生します。遅延は特定のリクエスト (URL) に固有のものではなく、ちょっとランダムに見えます。

常に正確にミリ秒の 5 秒または 10 秒であることを考えると、これはどこかの特定の設定が原因のように感じます。

4

2 に答える 2

1

洞察が得られる場合は、PyCon US での私の講演をご覧ください。

講演では、プロセス チャーンやスタートアップ コストなどを扱います。本当に必要がない場合は、最大リクエスト数を設定してはいけません。

また、問題がどこにあるかを診断するために New Relic を試すことも検討してください。これにより、バックエンド サービス インフラストラクチャの問題の Web アプリケーションであるかどうかを推測する手間が省けます。

このような監視がどのように役立つかについては、別の PyCon トークをご覧ください。

于 2013-08-30T20:25:26.470 に答える
0

これは DNS の問題で、ローカルで使用したドメイン名を /etc/hosts に追加すると、実際に問題が解決しました。変更を有効にするためにサーバーを再起動していませんでした.ネットワークを再起動するとそれが処理されると思いましたが、明らかにそうではありません.

于 2013-09-20T12:51:35.553 に答える