この記事の内容は、PHP サーバー Apache と Nginx の比較分析に関するもので、一定の参考価値がありますので、困っている方は参考にしていただければ幸いです。
Apache と Nginx の長所と短所の比較
1. Apache に対する nginx の利点:
軽量で、Web サービスも提供し、Apache よりもメモリの使用量が少ない
反同時実行性により、Apache がブロックしている間、nginx はリクエストを非同期かつ非ブロックで処理します。高い同時実行性の下では、nginx は低リソース、低消費電力、高パフォーマンスを維持できます。
高度にモジュール化された設計、モジュールの作成は比較的簡単です
コミュニティが活発で、さまざまな高パフォーマンスのモジュールがすぐに作成されます
nginx に対する Apache の利点:
リライト、nginx よりも強力ですrewrite
非常に多くのモジュールがあり、基本的に考えられるものはすべて見つかります
バグはほとんどありませんが、nginx には比較的多くのバグがあります
非常に安定しています
存在が理由であり、一般的にパフォーマンスが必要な Web サービスには nginx を使用します。パフォーマンスは必要なく、安定性だけが必要な場合は、Apache を使用してください。後者のさまざまな機能モジュールは前者よりも適切に実装されており、たとえば ssl モジュールは前者よりも優れており、設定可能な項目が増えています。ここで注意すべき点の 1 つは、epoll (freebsd 上の kqueue) ネットワーク IO モデルが nginx の高い処理パフォーマンスの根本的な理由であるということですが、epoll がすべての場合に勝てるわけではなく、静的サービス、少数のファイルのみを提供する場合は、Apache の選択モデルが使用されます。 epoll よりもパフォーマンスが高い可能性があります。もちろん、これはネットワーク IO モデルの原則に基づく単なる仮定であり、実際のアプリケーションは実際にテストする必要があります。
2. Web サーバーとして: Apache と比較して、Nginx は使用するリソースが少なく、より多くの同時接続をサポートし、より高い効率を反映します。このため、Nginx は仮想ホスト プロバイダーの間で特に人気があります。高い同時接続の場合、Nginx は Apache サーバーに代わる良い選択肢です: Nginx は、米国の仮想ホスト ビジネス オーナーによってよく選ばれるソフトウェア プラットフォームの 1 つです。最大 50,000 の同時接続の応答をサポートできます。 Nginx for 開発モデルとして epoll と kqueue を選択しました。
負荷分散サーバーとしての Nginx: Nginx は、Rails および PHP プログラムを直接サポートして内部で外部にサービスを提供できるだけでなく、HTTP プロキシ サーバーとして外部サービスもサポートできます。 Nginx は C で書かれた言語を採用しており、システム リソースのオーバーヘッドと CPU 使用効率の両方が Perlbal よりもはるかに優れています。
メール プロキシ サーバーとして: Nginx は非常に優れたメール プロキシ サーバーでもあります (開発の最初の目的の 1 つ)この製品はメール プロキシ サーバーとしても機能します)、Last.fm では成功した素晴らしい体験について説明しています。
Nginx はインストールが非常に簡単で、非常に簡潔な設定ファイルを備えたサーバーです (Perl もサポートしています)構文)、バグがほとんどありません: Nginx は特に起動が簡単で、数か月間実行しても再起動する必要がなく、ほぼ 24 時間年中無休で実行できます。サービスを中断することなくソフトウェア バージョンをアップグレードすることもできます。
3 、Nginx の構成はシンプルですが、Apache は複雑です
Nginx の静的処理パフォーマンスは Apache の 3 倍以上です
Apache の PHP サポートは比較的シンプルですが、Nginx は他のバックエンドと組み合わせて使用されます
Apache Nginx よりも多くのコンポーネントがあります
現在、Nginx が Web サーバーの第一の選択肢です
4. 主要な違いは、Apache が同期マルチプロセス モデルであり、1 つの接続が 1 つのプロセスに対応します; nginx は非同期です。複数の接続 (10,000 レベル) が 1 つのプロセスに対応できます
5. nginx は静的ファイルを適切に処理し、メモリ消費量が少なくなります。 Apache が依然として主流であり、多くの豊富な機能を備えていることに疑いの余地はありません。したがって、Apache に合わせる必要があります。もちろん、nginx がニーズを満たしていると判断できる場合は、nginx を使用する方が経済的な方法になります。
6. 個人的な過去の使用状況から判断すると、nginx の負荷容量は Apache の負荷容量よりもはるかに高いです。最新のサーバーもnginxを使用しています。また、nginx の設定を変更した後、設定に問題があるかどうかをテストすることはできませんが、Apache を再起動すると設定が間違っていることがわかり、クラッシュしてしまいます。変更するときは細心の注意を払います。クラスターサイトが多く、フロントエンドのnginxは同時並行性が高く、バックエンドのApacheクラスターとの連携も良好です。
7. nginx が動的リクエストを処理するのは役に立ちません。一般に、動的リクエストを処理するには、Apache が必要です。Nginx は、静的リクエストと逆リクエストにのみ適しています。
8. 私の個人的な経験から言えば、nginx は負荷パフォーマンスが非常に優れた非常に優れたフロントエンド サーバーです。Laoben で nginx を開き、Webbench を使用して 10,000 の静的ファイル リクエストをシミュレートするのは簡単です。 Apacheはphpなどの言語のサポートが充実しているほか、強力なサポートネットワークがある、nginxよりも開発期間が長くバグが少ない、ただしマルチコアの処理負荷をサポートしていないという欠点があるフロントエンドとバックエンドにはnginxを使用し、Apacheを使用することをお勧めします。大規模なWebサイトの場合は、nginxのクラスタ機能を使用することを推奨します
9. Nginx が Apache よりも優れている主な理由は 2 つあります: 1. Nginx 自体がリバース プロキシ サーバーである 2. Nginx は 7 層の負荷分散をサポートしています; その他、もちろん、Nginx は Apache よりも高い同時実行性をサポートしている可能性がありますが、 NetCraft の統計 (2011 年 4 月の統計) によると、Apache が依然として 62.71% を占めているのに対し、Nginx は 7.35% です。そのため、成熟したテクノロジと開発コミュニティはすでに非常にまともなパフォーマンスを備えているため、一般的に Aapche が依然としてほとんどの企業にとって第一の選択肢です。
10. Web サーバーのニーズによって選択が決まります。ほとんどの場合、静的ファイル処理、PHP-CGI サポート、リバース プロキシ機能、フロントエンド キャッシュ、接続維持など、APACHE よりも nginx の方が優れています。 Apache PHP (プリフォーク) モードでは、PHP の処理が遅い場合、またはフロントエンドの負荷が高い場合、Apache プロセスの数が急増し、サービス妨害が発生しやすくなります。
11. nginx lua モジュールをご覧ください: https://github.com/chaoslaw... Apache には nginx より多くのモジュールがあります。Apache は lua で直接実装できます。Apache は最も優れています。人気があります。なぜですか?ほとんどの人は、nginx に更新したり、新しいことを学ぶのが面倒です
12. nginx の場合、その設定ファイルが非常に簡潔であることが気に入っています。通常の設定では、多くのことがシンプルになり、操作効率が高く、使用するリソースが少なくなります、プロキシ機能を備えています。強力で、フロントエンド応答サーバーに最適です。
13. Apache は処理ダイナミクスに優れており、Nginx は同時実行性が高く、CPU メモリ使用量が低いです。書き換えが頻繁に行われる場合は、Apache が最適です。最良の選択
Nginx 利点:
はネットワークの 7 層上で動作し、ドメイン名やディレクトリなどの http アプリケーションの迂回戦略を立てることができます。その規則的なルールは HAProxy よりも強力であり、柔軟性が現在広く普及している主な理由の 1 つであり、これだけをベースにすると、Nginx は LVS よりもはるかに多くの状況で使用できます。
Nginx はネットワークの安定性への依存度がほとんどありません。理論的には、ping が可能であればロード機能を実行できます。これも利点の 1 つです。逆に、LVS はネットワークの安定性に大きく依存しており、これについては私も深く理解しています;
Nginx はインストールと構成が比較的簡単で、テストがより便利です。基本的にエラーをログに出力します。 LVS の構成とテストには比較的長い時間がかかり、LVS はネットワークに大きく依存します。
高い負荷圧力に耐えることができ、安定しています。ハードウェアが悪くなければ、一般に数万の同時実行をサポートでき、負荷度は LVS よりも比較的小さいです。
Nginx は、Web ページを処理するサーバーから返されるステータス コードやタイムアウトなどの内部サーバー障害をポート経由で検出でき、エラーを返すリクエストを別のノードに再送信します。 , しかし、欠点はURL検出をサポートしていないことです。たとえば、ユーザーがファイルをアップロードしていて、アップロード処理中にアップロードを処理するノードが失敗した場合、Nginx は再処理のためにアップロードを別のサーバーに切り替え、LVS は直接切断されます。重要なファイルを保存すると、ユーザーが不満を抱く可能性があります。
Nginx は、優れたロード バランサー/リバース プロキシ ソフトウェアであるだけでなく、強力な Web アプリケーション サーバーでもあります。 LNMP は近年非常に人気のある Web アーキテクチャでもあり、高トラフィック環境での安定性も非常に優れています。
Nginx は Web リバース アクセラレーション キャッシュとしてますます成熟しており、従来の Squid サーバーよりも高速なので、リバース プロキシ アクセラレータとして使用することを検討できます。
Nginx は中間レベルのリバース プロキシとして使用できます。このレベルでは、Nginx は基本的に無敵です。Nginx と比較できる唯一のものは lighttpd です。ただし、lighttpd はまだNginx のパフォーマンスを最大限に発揮していますが、機能や構成があまり明確でなく、コミュニティ情報も Nginx に比べて活発ではありません。
Nginx は静的 Web ページおよび画像サーバーとしても使用でき、この分野でのパフォーマンスは比類のありません。 Nginx コミュニティも非常に活発で、多くのサードパーティ モジュールがあります。
Nginx の欠点は次のとおりです:
Nginx は http、https、および電子メール プロトコルのみをサポートできるため、適用範囲が狭くなります。がその欠点です。
バックエンド サーバーのヘルス チェックは、ポートを介した検出のみをサポートし、URL を介した検出はサポートしません。セッションの直接保持はサポートされていませんが、ip_hash を通じて解決できます。
以上がPHPサーバーApacheとNginxの比較分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。