これは、Nginx が最新の epoll (Linux 2.6 カーネル) および kqueue (freebsd) ネットワーク I/O モデルを使用しているのに対し、Apache は従来の選択モデルが使用されます。 (推奨学習: nginx チュートリアル)
現在、大量の同時アクセスに耐えられる Linux 上の Squid と Memcached は、epoll ネットワーク I/O モデルを使用します。
多数の接続の読み取りと書き込みを処理するには、Apache で使用される選択ネットワーク I/O モデルは非常に非効率です。
以下では、メタファーを使用して、Apache で使用される select モデルと Nginx で使用される epoll モデルの違いを分析します。
あなたが勉強していると仮定します。大学、あなたが住んでいる寮の建物にはたくさんの部屋があり、友達があなたを探しに来ます。
バージョンを選択 ホステスは友達があなたを見つけるまで部屋から部屋へと連れて行きます。
epoll版の寮のおばちゃんは、まず各生徒の部屋番号をメモしてくれるので、友達が来たときに、自分が住んでいる部屋を伝えるだけで、友達を連れて行かなくても大丈夫です。建物内で人を探しています。
10,000 人がこの建物に住んでいるクラスメートを探しに来た場合、寮のおばさんの選択バージョンと epoll バージョンのどちらが効率的であるかは自明です。
同様に、同時実行性の高いサーバーでは、I/O のポーリングは最も時間のかかる操作の 1 つであり、select と epoll のどちらのパフォーマンスが高いかは非常に明らかです。
以上がApache と nginx ではパフォーマンスに大きな違いがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。