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にGraylogサーバーをインストールする方法

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

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

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

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

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

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

Ubuntu 14.10へのMcMyAdminのインストール

Ubuntu 14.10へのMcMyAdminのインストール

McMyAdminは、サーバーの管理に使用されるMinecraftサーバーコントロールパネルです。McMyAdminは無料ですが、複数のエディションがあり、一部はパイです

LinuxでTeamTalk Serverをセットアップする

LinuxでTeamTalk Serverをセットアップする

TeamTalkは、ユーザーが高品質のオーディオ/ビデオ会話、テキストチャット、ファイルの転送、および画面の共有を可能にする会議システムです。それは

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ruby on Railsは、プログラマーの生産性を向上させるために開発されたRubyの人気のあるWebフレームワークです。ただし、さまざまな宝石と依存関係を取得する

Vultr VPSにアクセスする方法

Vultr VPSにアクセスする方法

Vultrは、VPSにアクセスして構成、インストール、および使用するためのいくつかの異なる方法を提供します。アクセス認証情報VPS arのデフォルトのアクセス認証情報

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

GolangはGoogleが開発したプログラミング言語です。汎用性、シンプルさ、信頼性のおかげで、Golangは最も人気のあるものの1つになりました

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

別のシステムを使用していますか?DokuWikiは、データベースを必要としないPHPで記述されたオープンソースのWikiプログラムです。データをテキストファイルに保存します。ドクウィク

DebianでのChrootのセットアップ

DebianでのChrootのセットアップ

この記事では、Debianでchroot jailをセットアップする方法を説明します。私はあなたがDebian 7.xを使っていると思います。Debian 6または8を実行している場合、これは機能する可能性があります、bu

DebianにPiVPNをインストールする方法

DebianにPiVPNをインストールする方法

はじめにDebianでVPNサーバーを設定する簡単な方法は、PiVPNを使用することです。PiVPNは、OpenVPNのインストーラーおよびラッパーです。それはあなたのための簡単なコマンドを作成します

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

別のシステムを使用していますか?BigTree CMS 4.2は、高速で軽量な無料のオープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)であり、

Debian 9でソースからBrotliをビルドする方法

Debian 9でソースからBrotliをビルドする方法

別のシステムを使用していますか?Brotliは、Gzipよりも圧縮率が高い新しい圧縮方法です。そのソースコードはGithubで公開されています。ティ

PleskサーバーでHTTP / 2を有効にする方法

PleskサーバーでHTTP / 2を有効にする方法

PleskはネイティブのHTTP / 2サポートを備えています。PleskでのHTTP / 2のロールアウトは、他のコンポーネントに比べてはるかに簡単ですが、その導入プロセスには慎重な計画が必要です

FreeBSD 12にosTicketをインストールする方法

FreeBSD 12にosTicketをインストールする方法

別のシステムを使用していますか?osTicketは、オープンソースのカスタマーサポートチケットシステムです。osTicketのソースコードはGithubで公開されています。このチュートリアルでは

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の未来は、日々成長を続けています。