nginx が apache よりもパフォーマンスが高い理由を聞いてもいいですか? なぜ今でも apache が人気があるのですか?

WBOY
リリース: 2016-06-17 08:31:03
オリジナル
965 人が閲覧しました

返信内容:

「パフォーマンスはバスケットであり、その中にすべてが詰め込まれています。」

優れたパフォーマンスとは、まさに優れた IO パフォーマンスです。そして、Apache の CPU パフォーマンスは優れています。

純粋な IO タイプの静的リソースの場合は、明らかに Nginx の方が適しています。

Nginx の同時実行数がどれほど高くても、これらのリクエストが時間内に処理できない場合、後続のリクエストはキューに入れられる必要があります。率直に言って、スループットは良くありません。 ご招待ありがとうございます

データを見てみましょう

Apache vs. Nginx vs. Microsoft-IIS の使用統計

ランキング別の使用状況
順位前 100 万人では、Apache の使用率が nginx よりも大きくなります
順位 上位 100,000 人では、nginx の使用率が Apache よりも大きくなります

傾向から見ると
nginx


公式の変更ログを見てみましょう
nginx.org/en/CHANGES
2004 年バージョン 0.1.0 は 10 月に提出されましたが、機能が弱い
apache を見てください zh.wikipedia.org/wiki/A
1996 年には主流でした。

営利企業のテクノロジー選択では、パフォーマンスに圧倒的な優位性がない場合、何よりも安定性が優先されます。
Wiki Nginx の歴史を見てみましょう 主要なトラフィック Web サイトが nginx に切り替わったのは 12 年後です。
つまり、トラフィック量の多いサイトの置き換え計画が主流になってからまだ 4 年ほどしか経っていないのです。

トラフィックの多い Web サイトの多くはテクノロジーではなくビジネスによって動かされていると考えます。交換オプションの費用。圧倒的な利点と低コストのソリューションが存在しない場合。 apacheが動作すれば十分です。

新興インターネット企業向け。 。 1 つは IO 集約型で、もう 1 つはコンピューティング集約型です。パフォーマンスが高いという結論はどこから来るのでしょうか。 成熟度は、一方的な利点よりも重要な場合があります。 Apache が人気があるのは初心者だけです。業界企業はダメ



それはすごいですね。コメントを書いている人はどう理解していますか? 質問を比較して答えを確認できますか? 。 お誘いありがとうございます
ほとんどの開発者のコ​​ンピューターは WINDOS なので...
あと、今はサーバーサイドは基本的に NGINX ですよね? 使用シナリオ なぜ人気があるのか​​を語るには、まずこれら 2 つのものがどのように頻繁に運用されているかを理解する必要があります。

Apache は非常に古く、CGI、動的コンパイル、静的コンパイルなど、サポートされるべきすべての動作モードをサポートしていますが、アーキテクチャが古いこととパフォーマンスが低いことで批判されています。比較すると、新星としての Nginx は、FastCGI モードで実行されるヘテロジニアス モデルを選択しており、スケジューリング パフォーマンスが非常に優れており、ヘテロジニアスであるため、Nginx 自体がハングアップする可能性も小さくなり、FPM も低くなりました。現時点では、これが Nginx の現在の主流のアプリケーション モードでもあります。

Apache を使用している人は、動的コンパイルを使用してさまざまな環境で実行していると思います。そう、この 2 つは、Apache の動的モジュールを使用して同期モードで実行することを決定します。何らかの複雑な問題が発生した場合は、コンパイル中に統合が完了しているため、ApachePHP 中間層の問題は基本的に無視してかまいません。さらに、その同期アーキテクチャにより、PHP は HTTP プロトコル層のさまざまなリクエストとレスポンスの動作をより直接的に制御することもできます。たとえば、PHP は出力バッファを直接操作し、それを 1 秒あたり 1 バイトずつクライアントのブラウザにエコーバックします。 + これは、FPM + PHP のヘテロジニアス モデルでは実行できないことです (CGI 層には、PHP では制御できない独立したデータ バッファー領域があるため) 同時に、Apache 自体にも、たとえば、次のような多くの動的メカニズムがあるためです。書き換えは.htaccess内に置くことができ、httpdなどを再起動することなく直接変更できるため、柔軟性が求められる運用環境においてはApache全体の操作感が自然と向上し、開発環境に非常に適しています。

上記はすべて利点ですが、次に欠点について説明します。httpd がリクエストを処理するたびに、リクエスト セッションを実行するためにどれだけ大きなリソースのリストが使用されるかが想像できます。プロセスの実行中に各リンク (httpd->php->exts) によって占有されるロックは、同じプロセス内の他のリンクに対するミューテックス ロックと同等になります。その背後にある PHP の実行が完了していない場合、プロセスは httpd を実行します。フロントエンドは、一度高強度のリクエストを受け入れることを考えるべきではありません。一方で、未処理のプロセスが肥大化してメモリ内に留まり、新しいプロセスが CPU を消費します。リクエストを更新するには httpd フォークが必要です。複数の子プロセスに対処する必要があるため、転生が発生し、パニックが発生します。

そのため、メリットとデメリット、および周囲の観察に基づいて、Apache をまだ使用している人は次のような状況に陥る可能性があります。
1. 柔軟な構成と柔軟な対応が必要なローカル開発環境。 、パフォーマンスに敏感ではない
2. パフォーマンス要件がそれほど高くなく、柔軟性の要件がパフォーマンス要件よりも高い、昔ながらの人材。パフォーマンスのブラックホールが見つかるまでは諦めたくありません。

他にどのようなシナリオがあるかというと、高パフォーマンス、高安定性、集中的な運用環境だけが残されます。これは、実際には Apache の得意分野ではありません。問題がなければ、それは大きな失敗になります。ポイントは、mpm=worker を実行したとしても、制御が難しいことです (スレッド モードでの PHP の問題はさらに悪化するだけであり、問​​題が発生しやすくなります -_,-)。 Apache アーキテクチャは、この分野でやるべきことを非常にうまく実行していますが、Nginx はまだ非常に新しいため、Apache は比較的深い蓄積により、今後もいくつかのシナリオで使用されるでしょう。 . 武道の地。

要約すると、私が個人的に Apache が不滅で破壊不可能であると考える理由のいくつかを以下に示します。一部の説明は一方的である可能性があり、欠陥があれば修正されることを願っています。 質問には真剣に答えたいと思います。

Nginx は確かに静的リソースの配布に適しており、そのパフォーマンスは確かに Apache のパフォーマンスよりもはるかに優れています。同時実行テストには MacBook Pro で ab を使用しました。単一の 200 KB イメージの場合、同時実行は 8 W でした。 2W、4回。

一方、Apache + mod_php は、ほとんどの機能をすぐに設定しなくても、クラッシュすることなく N 年間安定して実行できるところまで成熟しました。 nginx + PHP-FPM は、そのまますぐに使用できるわけではありません。通常の PHP Web サイトをローカルでテストすると、Apache は動かず、PHP-FPM は完全にダウンしました。もちろん、これはパーソナライズされた構成の欠如、1 対多の負荷分散の欠如、監視ツールの不足が原因であることは理解していますが、このシナリオでは、Web サイトへのアクセスの大部分が非常に少ないことは明らかです。よりトラブルフリーに。

実際、問題が簡単に解決できるなら、誰が苦労し続けたいと思うでしょうか。 Apache と Nginx にはそれぞれ独自のシナリオがあります。現在、Nginx + Apache のフロントエンドとバックエンドの組み合わせがたくさんあります (笑)。貧弱な PHP-PFM :-D xmapがあるからです(これと呼ばれているようです、パッケージです、xは何のことか忘れました、mはmysql、aはApache、pはもちろんphpです)
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート