ホームページ >バックエンド開発 >PHPチュートリアル >3大WEBサーバー(apache、lighttpd、nginx)の比較分析
1. lighttpd
Lighttpd は、メモリのオーバーヘッドが非常に低く、CPU 使用率が低く、優れたパフォーマンスと豊富なモジュールを備えたプログラムです。 lighttpd は、数多くのオープンソースの軽量 Web サーバーの中でも優れたものの 1 つです。 FastCGI、CGI、Auth、出力圧縮、URL 書き換え、エイリアス、その他の重要な機能をサポートします。
Lighttpd は、fastcgi を使用して php を実行します。これにより、大量の同時実行に応答するために使用する PHP プロセスが非常に少なくなります。
Fastcgi の利点は次のとおりです:
· 安定性の観点から、fastcgi は独立したプロセス プールで CGI を実行します。1 つのプロセスが停止した場合、システムはそれを簡単に破棄し、ロジックを実行する新しいプロセスを再割り当てできます。
· out out out out out out of safety out out of fastcgi とホスト サーバーに任せられるため、ホスト サーバーは通常の動的 Web ページの場合は IO に集中できます。処理できるのはほんの一部であり、大量の画像の静的IO処理にはロジックプログラムの関与を一切必要としません(注1)・fastcgiはスケーラビリティの点で中立的な技術標準であり、あらゆる言語 (php、java、python...) で書かれた処理プログラムを完全にサポートします2. apache netcraft (www.netsraft.co.英国
)、世界の Web サーバーの 50% 以上が Apache を使用しています。1995 年 4 月に、最初の Apache (0.6. バージョン 2) が Apache グループによって公開およびリリースされました。Apache グループは非営利団体です。これは、完全にインターネットを通じて動作し、Apache Web サーバーの標準ディストリビューションにどのコンテンツを含めるかを決定します。新規作成時には、誰でも隠れたエラーを変更したり、新しい機能を提供したりすることができます。コードは Apache グループに送信され、グループはその特定のコンテンツをレビューしてテストし、問題がなければ、コードは Apache に統合されます。
Apache の主な機能: 1) ほぼすべてのコンピューターで実行できます。 2) 最新の http/1.1 プロトコルをサポート3) シンプルで強力なファイルベースの構成 (httpd.conf)。4) 共通ゲートウェイ インターフェイス (cgi) をサポート5) 仮想ホストをサポート。6) http 認証をサポートします。
7) perl を統合します。
8) 統合されたプロキシ サーバー
9) サーバーのステータスは Web ブラウザーを通じて監視でき、ログはカスタマイズできます
10) をサポートします。サーバー側インクルージョン コマンド (ssi)
11) セキュア ソケット レイヤー (ssl) をサポートします。
12) ユーザー セッション プロセスの追跡機能があります。
13) fastcgi をサポートします
14) Java サーブレットをサポートします
3.nginx
Nginx はロシア人によって書かれた非常に軽量な HTTP サーバーです。Nginx (「エンジン X」と発音します) は、高性能 HTTP およびリバース プロキシ サーバーであり、IMAP/POP3/SMTP プロキシ サーバーでもあります。 Nginx は、ロシアで 2 番目にアクセス数の多い Rambler.ru サイト用にロシアの Igor Sysoev によって開発されました
Nginx はイベント駆動型で記述されているため、非常に優れたパフォーマンスを備え、非常に効率的なリバース プロキシと負荷分散でもあります。 Lighttpdに匹敵する性能を持っていますが、Lighttpdのメモリリーク問題はなく、Lighttpdのmod_proxyも問題があり長らく更新されていませんでした。ただし、Nginx は CGI モードでの実行をサポートしていません。CGI モードによって引き起こされるプログラムの脆弱性を軽減できるためです。したがって、PHP プログラムを実行するには FastCGI を使用する必要があります。
nginx は、HTTP サーバーとして、次の基本機能を備えています:
静的ファイル、インデックス ファイルの処理、およびファイル記述子のバッファリングの自動有効化。
キャッシュレス リバース プロキシ アクセラレーション、シンプルなロード バランシング、フォールト トレランス。
FastCGI、シンプルなロードバランシング、フォールトトレランス。
モジュール構造。 gzip 圧縮、バイト範囲、チャンク応答、SSI フィルターおよびその他のフィルターが含まれます。 1 つのページ内に複数の SSI が存在し、FastCGI または別のプロキシ サーバーによって処理される場合、この処理はお互いを待たずに並行して実行できます。
Nginx はパフォーマンスの最適化のために特別に開発されており、パフォーマンスが最も重要な考慮事項であり、実装では効率に細心の注意を払っています。カーネル ポーリング モデルをサポートしており、高負荷のテストに耐えることができ、最大 50,000 の同時接続をサポートできることが報告されています。
Nginxは安定性が高いです。他の HTTP サーバーがアクセスのピークに遭遇したり、誰かが悪意を持って遅い接続を開始したりすると、サーバーの物理メモリが枯渇し、スワップが頻繁に発生し、応答が失われる可能性があり、サーバーは再起動するしかありません。たとえば、現在 Apache のプロセスが 200 を超えると、Web の応答速度は明らかに非常に遅くなります。 Nginx は段階的リソース割り当てテクノロジーを採用しており、CPU とメモリの使用量が非常に低くなります。 nginx は公式に、10,000 の非アクティブな接続を維持し、メモリを 2.5M しか占有しないと述べているため、DOS のような攻撃は基本的に nginx には役に立ちません。安定性の点では、nginx は lighthttpd よりも優れています。
Nginx はホットデプロイメントをサポートしています。特に起動が簡単で、ほぼ 24 時間年中無休で中断することなく実行でき、数か月間実行したとしても再起動する必要はありません。サービスを中断せずにソフトウェアのバージョンをアップグレードすることもできます。
サーバー |
Apache |
Nginx Lighttpd |
| プロキシ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
とても良い | 良い
Fcgi |
悪い |
良い |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ホットな展開 |
サポートされていない |
| サポートされていません|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
システム圧力は比較的高い | 非常に小さい | 比較的小さい | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
安定性 | 良い | とても良い | 悪い | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
セーフセックス | 良い | 平均的 | 平均的 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
技術サポート | とても良い | 珍しい |
| 平均||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
静的ファイル処理 | 平均 | 非常に良い | 良い | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vhosts仮想ホスト | サポートされている | サポートされていない | サポートされている | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
リバースプロキシ | 平均 | 非常に良い | 普通 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
セッションスティッキー | サポートされている | サポートされていない | サポートされていない | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
注: 比較的大規模な Web サイトでは、サーバーコストの節約は間違いなく客観的です。小規模な Web サイトには、多くのサーバーが存在しない場合が多く、Apache などの従来の Web サーバーを使用していれば存続できるようです。しかし、これには明らかな欠点があります。Apache はトラフィックのバースト (クローラーや Digg の影響など) に対処するときに簡単に過負荷になってしまいます。この場合、Nginx が最適です。 推奨ソリューション:Apache バックエンドサーバー (主に php と中国語のurlなどの一部の機能リクエストを処理します) Nginx フロントエンドサーバー (それを使って占有するシステムリソースが少なくなり、静的ページに対する大量のリクエストを処理できる利点が得られます) Lighttpd 画像サーバー 一般に、nginxの改良により、それが主流になるでしょう将来的にはウェブサーバー。 dynamicページと静的ページのリクエストと並行性に応じて、3種類のソフトウェアの応答時間をテストします cpu% 1秒あたりのリクエスト数
Re QuestsperSecond
RequestsperSecond
|