ホームページ  >  記事  >  バックエンド開発  >  Apache と Nginx のどちらを選択するか

Apache と Nginx のどちらを選択するか

*文
*文オリジナル
2017-12-22 10:20:045802ブラウズ

市場には多くの WEB サーバー製品があり、主流なのは Apache と Nginx です。しかし、Apache と Nginx のどちらを選択するかが多くの初心者を混乱させます。この記事では、誰もがより明確に理解して選択できるように、Apache と Nginx を比較します。

1. はじめに

Apache:
Apache は 1995 年に作成され、1999 年から Apache Software Foundation の下で開発されてきました。 Apache は柔軟で効率的で、豊富な拡張モジュールと活発なコミュニティ サポートを備えており、世界で最も主流のオープン ソースで無料の Web サーバー ソフトウェアとなっています。

Nginx:
Nginx は、ロシアのソフトウェア エンジニア Igor Sysoev によって作成された無料のオープンソース Web サーバーです。 2004 年の発表以来、nginx は高いパフォーマンス、高い同時実行性、低いメモリ使用量に焦点を当ててきました。また、負荷分散、キャッシュ、アクセスと帯域幅の制御、さまざまなアプリケーションとの効率的な統合といった機能により、ユーザーの間で徐々に人気が高まっています。

以下は、2017年11月21日に更新された最新のWebサーバー市場シェア比較表です:

Apache と Nginx のどちらを選択するか

2. 比較

ApacheとNginxは背景は異なりますが、その役割と目的は一貫しています。簡単に言うと、ユーザーのリクエストを受け取り、そのリクエストを処理し、最後に処理結果をユーザーに返します。

1. リンクの処理

Apache と Nginx の最大の違いは、接続の処理方法です。 Apache は、オペレーティング システム リソースの使用、プロセスとスレッド プールの管理、ユーザー リクエストの制御と処理を行う一連のマルチ処理モジュールを提供します。

Apache には、mpm_prefork、mpm_worker、mpm_envent の 3 つのマルチ処理モジュールが用意されています。以下で簡単に説明し、比較してみましょう。

mpm_prefork: モジュールは多くのサブプロセスを生成し、各サブプロセスはシングルスレッドであり、各スレッドは 1 対 1 の関係でリクエストをリンクします。したがって、リクエストの数がプロセスの数よりも多い場合、サーバーのパフォーマンスは十分ではありません。

Apache と Nginx のどちらを選択するか

mpm_worker: prefork とは異なり、ワーカー neutron プロセスはマルチスレッドであり、各スレッドがユーザー接続を管理します。スレッドの数はプロセスの数よりも大きいため、新しい接続はプロセスがアイドル状態になるのを待たずに、すぐにアイドル状態のスレッドを取得できます。

mpm_event: このモジュールはワーカーに似ています。違いは、イベントが長時間のリクエストによって占有され、リソースの浪費を引き起こすことを避けるために、イベントが長い接続 (キープアライブ) を処理できることです。また、高同時実行時のリクエスト処理機能も強化されます。シナリオ。

Apache と Nginx のどちらを選択するか

Apache とは異なり、Nginx は非同期、ノンブロッキング、イベント駆動型の方法で実装されます。 Nginx ワーカー プロセスはシングルスレッドであり、各スレッドは多数のユーザー リクエストを非同期に処理できます。以下は Nginx の動作原理図です:

Apache と Nginx のどちらを選択するか


2. 静的コンテンツと動的コンテンツの処理

静的コンテンツでも動的コンテンツでも、Apache にはそれを処理できる機能が組み込まれています。解析および実行機能 外部プロセッサを必要としない動的スクリプト言語 (PHP、Python、Perl を含む)。

動的コンテンツ処理がおそらく Nginx の問題点であることは疑いの余地がありません。 Nginx は動的コンテンツの処理が効率的ではないため、外部プロセッサの助けを必要とします。したがって、サイトに多くの動的な機能がある場合は、Apache のパフォーマンスの方が好みに合う可能性があります。ただし、Nginx は Apache に比べて動的コンテンツ処理能力が劣っていますが、静的コンテンツ処理は依然として非常に効率的です。

3. 概要

Apache は、豊富なモジュール コンポーネントのサポート、強力な安定性、少数のバグ、および強力な動的コンテンツ処理を備えています。

Nginx は軽量で、使用するリソースが少なく、負荷分散、強力な高同時処理、および効率的な静的コンテンツ処理を備えています。

Apache と Nginx には、WEB サービスとしてそれぞれの強みがあるため、将来的にどちらかが完全に置き換えられるとは考えていません。重要なのは、ユーザーがアプリケーションのシナリオを慎重に検討し、自分のニーズと状況に基づいて最適な製品を選択する必要があるということです。


関連書籍:

Ubuntu 16.04 で Apache HTTP Serve を構成する方法

CentOS7 での Apache、php7、mysql5.7 の詳細なインストールと構成

LNMP環境でNginxサーバーをTengineに置き換えるサンプルコード

Nginxリバースプロキシとロードバランシングの練習


以上がApache と Nginx のどちらを選択するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。