多くの人が Web サーバーとして apache2 を使用しています。 しかし、そのパフォーマンスの最適化について考える人はほとんどいません。パフォーマンスの最適化は、サイト ページの読み込み速度、スクリプト (特に PHP) の処理速度、さらには CPU 負荷の増加や RAM の使用量の増加に直接比例して影響します。
したがって、次のマニュアルは初心者 (初心者だけではありません) のユーザーにも役立つはずです。
以下のすべての例は、Raspberry PI 3、Debian 9、Apache 2.4.38、PHP 7.3 で使用されました。
Итак、начнем。
1. 未使用モジュールの無効化
XNUMX つ目の方法は、使用しないモジュールを単純に無効にすることです。
現在使用されているモジュールのリストは、次のコマンドで表示できます。
apache2ctl -M
モジュールを無効にするには、次のコマンドを使用します。
a2dismod *название модуля*
したがって、モジュールを有効にするには、次のコマンドを使用します。
a2enmod *название модуля*
ご使用の際はご注意ください a2dismod、モジュールの名前は、モジュール自体という単語を付けずに記述する必要があります。
たとえば、コマンドの出力にいる場合、 apache2ctl-M 見た プロキシモジュール、それを無効にするには、次のコマンドを使用する必要があります - a2dismod プロキシ
(個人的な経験から) システムに最も負荷をかけるモジュールは次のとおりです。
- PHP、Ruby、Perl、およびさまざまなスクリプト言語用のその他のモジュール
- SSL
- リライト
- CGI
したがって、これらのモジュールが必要ない場合は、これらのモジュールを無効にすることをお勧めします。
また、モジュールを無効にした後は、次のコマンドを使用することをお勧めします。 apache2ctl 構成テスト、使用されているサイトの構成がチェックされ、無効になっているモジュールのいずれかがサイトに必要な場合は、エラーが生成されます。
2. MPM(Multi-Processing Module)の変更とphp-fpmの使用
デフォルトでは、インストール後、apache2 は MPM Prefork (1 接続あたり 1 スレッド) を使用します。これにより、パフォーマンスが大幅に低下しますが、同時に安定性とセキュリティが向上します。
ただし、パフォーマンスを最適化するには、接続ごとに複数のスレッドを使用できる MPM ワーカーを使用することをお勧めします。
これを有効にするには、次のコマンドを使用します。
a2dismod mpm_prefork //Отключаем prefork
a2dismod php7.3 //Отключаем модуль php, который зависит от prefork
a2enmod mpm_worker //Включаем worker
ただし、Worker を使用すると問題が発生する可能性があります。理由は次のとおりです。 php7.3 モジュールは Prefork モジュールに依存しています。
この問題を解決するには、PHP スクリプトの実行に使用される php7.3-fpm モジュールをインストールしましょう。
apt-get update && apt-get install php7.3-fpm //Устанавливаем
systemctl enable php7.3-fpm && systemctl start php7.3-fpm //Добавляем в автозагрузку и запускаем
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf //Включаем модуль и конфиг для него
php-fpm を使用すると、apache2 プロセスによって使用される RAM の量も削減され、PHP スクリプトの処理がわずかに高速化されることに注意してください。
3。 結論
したがって、このような単純なアクションにより、パフォーマンスを最適化し、マシン (この場合は RPI3) の負荷を軽減することができました。
もちろん、圧縮の有効化 (これは非常に便利ですが、ほとんどはデフォルトですでに有効になっています)、MPM 設定 (構成ファイル) の変更、HostnameLookups の無効化など、他にも何百もの最適化オプションがありますが、この記事ではこれらが私にとって最も役に立った点であり、他の人にも役立つことを願っています。
出所: habr.com