システムパフォーマンス入門

パフォーマンスに詳しいインフラに憧れて

ユーザ用ツール

サイト用ツール


· 最終更新: 2021/01/31 by kurihara


PHPを利用する場合のWebサーバ比較(ApacheかNginxかLiteSpeedか)

結論

PHPを動かすWebサーバは、LiteSpeedが軽くてよさそうです。
ただし、まだ新しい技術なので、情報も少ないです。Enterprise版でないと使えない機能もあります。

一番お手軽なのは、Apache(prefork) + mod_phpですが、
サービス向けでは、メモリー効率を考えると、Apache(event) + php-fpm か、Nginx + PHP-FPMがいいです。
パフォーマンスに困った時に、LiteSpeedでいいかと思います。


PHPのモジュール版とCGI版の違い

モジュール版

  • WebサーバーのプロセスのなかでPHPを実行する

セーフモード

共有サーバでのセキュリティの問題を解決するための仕組みで、例えば、同一サーバの他のユーザが自ユーザのファイルを参照できないようにすることができます。


CGI版

  • Webサーバーとは別のプロセスで実行する
  • CGIを動かす各ユーザーは、Webサーバー本体を動かすユーザーとは異なる
  • 他ユーザーに干渉することがない
マイナス
  • PHPプログラムが呼び出されるたびにプロセスが1つ立ち上がる
  • Webサーバーとは別個のプロセスので、実行するたびにメモリのロードが必要となり、処理作度がモジュール版に比べて遅い。

FastCGI

CGIが、リクエスト毎に1つの新しいプロセスで処理しますが、FastCGI サーバがプロセスを永続化し高速化します。


PHPがモジュール版かCGI版かの確認方法

phpinfo()で、確認できます。
Server API欄を確認して、Apache 2.0 Handlerとなっていればモジュール版です。
Sever API欄がCGI/FastCGIとなっていればCGI版です。



phpinfo.php

<?php
phpinfo();
?>


Apacheで、PHPを動かす場合

PHPモジュール

Apache(prefork MPM) + mod_php

Apacheの場合、phpモジュール(mod_php)を利用するのが一般的です。
すぐに利用できます。

Apache(event MPM) + php-fpm

メモリ使用量を大きく減らす。
同時接続数増加時のパフォーマンス劣化も抑えられる

CGI版

Apacheの場合、少し前は、共用のレンタルサーバでは、セキュリティーの関係で、CGI版が使われることが多かったです。


Nginxで、PHPを動かす場合

Nginx + PHP-FPM

Nginxの場合、PHP-FPM(PHP-FastCGI Process Manager)を利用するのが一般的です。
FastCGI サーバがプロセスを永続化し高速化します。

NginxのプロセスとPHP-FPMのプロセスを動かす必要があります。

--> Nginx --> PHP-FPM --> PHP


LiteSpeedで、PHPを動かす場合

PHPを動かく環境で、Apache + mod_phpとNginx PHP-FPMがいいか悩んでいたら、LiteSpeedが圧倒的に早くて軽いそうです。
PHPも最適化されたものを使われます。

https://www.php.net/manual/ja/install.unix.litespeed.php

LiteSpeed PHP は、LiteSpeed SAPI を通じて LiteSpeed プロダクトと動作させるための 最適化された PHP ビルドです。


Apache + mod_phpとNginx PHP-FPMのパフォーマンス比較

参考 Is Nginx + php-fpm is suppose be much faster than Apache + mod-php

https://stackoverflow.com/questions/29403998/is-nginx-php-fpm-is-suppose-be-much-faster-than-apache-mod-php

There was a little improvement on performance in Nginx than Apache but it was not a major difference where it's worth to change all my server architecture from Apache to Nginx. And when I observe the server resource utilization also I didn't find much of difference between Nginx and Apache
NginxのパフォーマンスはApacheよりも少し改善されましたが、すべてのサーバーアーキテクチャをApacheからNginxに変更する価値があるという大きな違いはありませんでした。 また、サーバーリソースの使用率を観察したところ、NginxとApacheの間に大きな違いは見られませんでした。
There was a little improvement on performance in Nginx than Apache but it was not a major difference where it's worth to change all my server architecture from Apache to Nginx. And when I observe the server resource utilization also I didn't find much of difference between Nginx and Apache
これについてもう少し調査したところ、Nginxは静的リソースでうまく機能し、php-fpmなどの外部アプリケーションを使用して実行する必要があるphp処理などの他の動的コンテンツ配信ではうまく機能しないことがわかりました。 したがって、WebアプリケーションのPHP処理でパフォーマンスのボトルネックがある場合、ApacheをNginxに置き換えることは解決策にはなりません。


参考 LITESPEED(PHP Hello World)

LITESPEED公式の比較です。

https://www.litespeedtech.com/benchmarks/php-hello-world

Part of the difference in speeds is due to different server APIs. LiteSpeed Enterprise used LSAPI, PHP-FPM uses FCGI, EA4 Default uses CGI.

EA4は、cPanelから利用できるeasyapache 4のことです。CGI版と記載があります。
Apache + mod_PHPの記載がないのが残念です。


参考


· 最終更新: 2021/01/31 by kurihara

ページ用ツール