高負荷Apacheサーバーのパフォーマンスチューニング
(私たちにとって)負荷の高いWebサーバーで見られるサーバーパフォーマンスの問題を理解したいと考えています。環境は次のとおりです。 Debian Lenny(すべての安定パッケージ+セキュリティ更新プログラムにパッチ適用済み) Apache 2.2.9 PHP 5.2.6 Amazon EC2ラージインスタンス 私たちが見ている振る舞いは、通常、ウェブはレスポンシブに感じますが、リクエストの処理を開始するのにわずかな遅延があることです-時々、ほんの数秒、ピークの使用時間で2〜3秒です。サーバーの実際の負荷は非常に高いと報告されていtopます。多くの場合、10.xxまたは20.xxで報告されています。さらに、これらの時間(偶数vi)の間にサーバー上で他の処理を実行するのは非常に遅いため、負荷は確実に増加します。奇妙なことに、Apacheはその最初の遅延以外に非常に応答性が高いままです。 preforkを使用して、Apacheを次のように構成します。 StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 KeepAliveとして: KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 サーバーステータスページを見ると、このような高負荷の時間でも、クライアントの上限に達することはほとんどなく、通常80〜100のリクエストとキープアライブ状態のリクエストの多くを処理します。これは、最初の要求の遅さを「ハンドラーの待機」として除外するように指示しますが、間違っている可能性があります。 AmazonのCloudWatchモニタリングから、OSが15を超える負荷を報告している場合でも、インスタンスのCPU使用率は75〜80%であることがわかります。 からの出力例top: top - 15:47:06 up 31 days, 1:38, 8 users, load average: 11.46, 7.10, 6.56 Tasks: 221 total, 28 running, …