Ubuntu 14.04でのローエンドVPSのApache最適化

Apacheのインストールと初期化は非常に簡単ですが、多数のモジュールがプリインストールされているため、低RAM VPSで実行するとパフォーマンスの問題が発生する可能性があります。

したがって、必ずしもより大きなサーバーが必要なわけではありませんが、Apacheの設定を適切に構成するだけで、可能な限り最高のパフォーマンスを得ることができます。これを実現するためにすべきいくつかのことを次に示します。

このチュートリアルはUbuntu 14.04 LTS向けですが、原則は以前のバージョンと同様です。


1. Apacheモジュールを無効にする

コマンドでインストールされたls /etc/apache2/mods-available/すべてのモジュールと、現在でアクティブになっているすべてのモジュールのリストを表示できます ls /etc/apache2/mods-enabled/

Apacheの初期インストールでは、デフォルトで15以上のモジュールが有効になっています。これらは多すぎてほとんどが必要ありません。

まず、現在アクティブなすべてのモジュールのリストを作成し、必要なものを無効にして再度有効にする必要がある場合に備えて、後で参照できるように保存する必要があります。次に、コマンドを使用してモジュールを1つずつ無効にします(例としてmoduleNameを使用)。

sudo a2dismod moduleName

...各変更後にApacheを再起動して、エラーが発生していないか確認します。

不要な場合に無効にする必要があるモジュールは次のとおりです。

  • PHP
  • SSL
  • リライト
  • Perl
  • パイソン

モジュールを無効にしてApache構成を再ロードした後、nanoなどのテキストエディターでApacheエラーログを開いてエラーを確認できます。

sudo nano /var/log/apache2/error.log

エラーが発生した場合は、次のコマンドで対応するモジュールを再度有効にします。

sudo a2enmod moduleName

次に、最小限のリストが整理されるまでApacheを再起動します。


2. mpm_preforkを設定します

デフォルトのApache構成(小規模サーバーではバランスが取れていない)では、メモリがすぐに使い果たされ、クラウドサーバーが過負荷になる可能性があります。これにより、Webページは常にロードされた状態でハングします。サーバーはこれらの無効なApacheプロセスをアクティブに保ち、不必要にコンテンツを提供しようとするため、提供できるプロセスの数が減少する可能性があります。

この問題を解決するには、最初に、Apacheとは別にサーバーに必要なRAMの量と、Apacheプロセスが使用しているメモリの平均量を調べる必要があります。

Apacheの実行中に、サーバーでtopコマンドを開きます。

top -bn 1

結果表で:

  • apache2除くすべてのプロセスについて、RES列の数値を加算し、RAMの総量から削除します。600 MBを取得するとします。
  • すべてのapache2プロセスから平均を取得します20 MBを取得するとします。
  • 次に、600/20 = 30の最大Apacheプロセスを除算します。

次のステップでは、mpm_preforkモジュール構成ファイルを編集します。

sudo nano /etc/apache2/mods-enabled/mpm_prefork.conf

次のようになります。

<IfModule mpm_prefork_module>
    StartServers             2
    MinSpareServers          2
    MaxSpareServers          5
    MaxRequestWorkers        30
    MaxConnectionsPerChild   0
</IfModule>

どこ:

  • StartServers:開始するサーバープロセスの数。
  • MinSpareServers:予備にしておくサーバープロセスの最小数。
  • MaxSpareServers:予備として保持されるサーバープロセスの最大数。
  • MaxRequestWorkers:起動できるサーバープロセスの最大数。
  • MaxConnectionsPerChild:サーバープロセスが処理するリクエストの最大数。

MaxRequestWorkers設定、あなたは上記の部門で見つかったものは何でも、それを変更する必要があります。

これで、VPSが過負荷になり、一度に提供できるクライアントの最大数に達した場合、それらのクライアントにサービスが提供され、他のユーザーはすぐに失敗します。その後、ページをリロードして再試行できます。これらの接続をすばやく閉じて、サーバーを永久に開いたままにするのではなく、正常な状態にしておく方がはるかに優れています。


3.ログを減らす

パフォーマンスを最大化するために、記録する情報を間違いなく減らすことができます。デフォルトのApache構成では、LogLevel設定はwarnに設定されています。これをエラーに変更して、エラーメッセージのみを保持できます。

Apache構成ファイルを開きます。

sudo nano /etc/apache2/apache2.conf

行を見つけます:

LogLevel warn

...そしてそれを次のように変更します:

LogLevel error

次に、ファイルを保存し、次のコマンドでApacheを再起動します。

sudo service apache2 restart

Apacheがログを保持するデフォルトのファイルは/var/log/apache2/error.logです。


4. mod_phpの置き換えを検討する

PHPサイトを実行している場合は、mod_phpモジュールを使用している可能性が高くなります。このモジュールにより、リクエストが画像、CSS、JavaScriptなどの静的リソースに対するものであっても、すべてのApache子プロセスが100 MBを超えるRAMを使用する可能性があります。

優れた代替手段は、php-fpmモジュールです。これは、fastcgiプロトコルを使用する別個のプロセスです。php-fpmを使用すると、Apacheプロセスのメモリは、静的コンテンツの場合は10 MB、動的コンテンツの場合は60 MBに低下します。

この変更で動作させることは少し難しいかもしれませんが、努力する価値はあります。


5. mpm_preforkの置き換えを検討する

ほとんどのApache構成はmpm_preforkモジュールを使用してます。このモジュールはスレッドセーフであり、複数の子プロセスをそれぞれ1つのスレッドで使用し、各プロセスは一度に1つの接続を処理します。PHPやRailsなどの外部モジュールが必要ない場合は、apache2-mpm-workerモジュールに置き換えることができます。ワーカーMPMは、多数のスレッドを持つ複数の子プロセスを使用し、各スレッドは一度に1つの接続を処理します。

ワーカーモジュールを有効にするには、それをインストールする必要があります。

sudo apt-get install apache2-mpm-worker

このコマンドは、mpm_preforkmos_php、およびその他の互換性のないアドオンモジュールをアンインストールします。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。