バックグラウンド
私はDjangoアプリケーションを持っています。それは低負荷で動作し、かなりうまく応答しますが、100ユーザー/秒のような高負荷では、100%のCPUを消費し、CPUの不足のために速度が低下します。
問題:
- アプリケーションのプロファイリングにより、関数にかかる時間がわかります。
- この時間は高負荷で増加します。
- 消費される時間は、複雑な計算またはCPUの待機が原因である可能性があります。
では、コードの一部によって消費されるCPUサイクルを見つける方法は?
CPU消費量を減らすと、応答時間が長くなります。
- 非常に効率的なコードを記述した可能性があり、CPUパワーを追加する必要があります
また
- CPUを使用して速度を低下させる愚かなコードがあるかもしれませんか?
アップデート
- Jmeterを使用してWebアプリのプロファイルを作成していますが、スループットは2リクエスト/秒です。[100ユーザー]
- 100回のリクエストで平均36秒、1回のリクエストで1.25秒の時間が得られます。
より詳しい情報
- 構成Nginx+Uwsgi、4人のワーカー
- REST APIからの応答を使用して、データベースは使用されていません
- 最初のヒットで、REST APIの応答がキャッシュされるため、違いはありません。
ujson
json解析に使用します。
知りたい:
- Python-Djangoは、非常に多くの大規模なサイトの非常に多くの組織で使用されているため、ハイエンドのデバッグ/メモリ-CPU分析ツールが必要です。
- 私が見つけたものはすべて、プロファイリングを実行するコードのカジュアルなスニペットでした。