Apache サーバーのスケールアップ

Apache サーバーのスケールアップ

私は apache2 を実行する Ubuntu サーバーを所有しており、限られた時間内に約 500 ~ 1000 人の同時ユーザーがアクセスすると予想しています。サーバーは、postgresql データベース (サイズは約 20 MB) に接続されたカスタム (かなり軽量) PHP ページと静的コンテンツを混合して提供します。ハードウェアは安定しており、かなり強力です。

  • インテル Xeon E5420 @ 2.5GHz
  • 12 GB の RAM

このサーバーでの以前のラッシュ時に、ServerLimit、MPM モジュールの MaxClients を増やし、Timeout と KeepAliveTimeout を減らしました。うまくいきましたが、動作が遅く、もっとできることがあると思います。このような負荷を処理するには、Apache サーバーをどのように構成すればよいでしょうか?

答え1

このシナリオでのボトルネックは、PHP と、PHP がデータベースに対して行っている処理です。呼び出しごとに新しい接続を開くと、他の何よりもディスク アクセスで I/O の壁にぶつかる可能性が高くなります。最善の方法は、データベースと静的コンテンツを RAM ディスクに保持し、必要に応じてディスク上のデータベースに変更をコミットすることです。また、PHP で RAM 専用の高速ハッシュ検索を使用して効率的なクエリ キャッシュ メカニズムを維持し、クエリ キャッシュ検索に関連する不要な処理サイクルで postgresql に負担をかけないようにします。postgresql は、独自のコードよりもクエリ キャッシュが効率的である可能性がありますが、そもそも接続する必要がないほど高速ではありません。

答え2

サーバーは簡単に処理できるはずです。いくつか注意点があります:

  1. SSL を使用すると計算要件が増加します。したがって、プレーン HTTP を使用してください。
  2. prefork MPM を使用するとメモリ要件が増加します。そのため、worker MPM を使用してください。
  3. より多くのコアでより多くの同時実行を使用すると、パフォーマンスが向上します。
  4. PostgreSQL データベースにさらに多くの RAM を割り当てます。

これらは単なる一般的なガイドラインです。

関連情報