マルチコア/マルチプロックは、Webサーバー上でパフォーマンスを向上させますか?

NGINXまたはApacheは、次のいずれかのサーバーを利用していますか?

  • マルチコア、または

  • 複数のプロセッサーですか?

もしそうなら、なぜですか?

1

3 答え

いくつかのCPU/CPUコアを使用することで、複数のクライアント接続(および要求)を並列処理(より高性能を実現)するサーバーアプリケーションを利用できます。

マルチコアCPUの世界では、この問題は広範な研究の対象となっています。

並列処理(マルチコアCPUのような)には3つの方法があります。

  1. いくつかのプロセスを使用する:

  2. 単一のプロセスで複数のスレッドを使用する;

  3. いくつかのプロセスで複数のスレッドを使用します。

Apacheはいくつかのモデルを調査しており、Nginxはオプション#1を使用しています。

どのモデルがより優れた性能を発揮するかは、一般的に実装上の問題とみなされます(少なくともプロセスが非常に軽いため、スレッドと競合するUnix上では)。

今、質問に戻る私の推測(読書テストに基づいて公開 here )は、マルチコアCPU上でNginxよりも適切な(マルチスレッドの)Apacheアーキテクチャーを拡張する必要があります。

ApacheはNginxよりも速いことを意味するわけではありません.1,2,3、... 16コアでは、ApacheはNginxよりも優れています。WHERE Nginxはより多くのクライアント要求を処理します。

  • パフォーマンスは高速になります(1つのコアCPUで複数の要求を1秒あたりに処理します)。

  • スケーラビリティとは、CPUコアの数が増えるにつれ、1秒あたりに多くのリクエストを処理する能力です(理想的には、

スケーラビリティのないサーバの速度の1秒あたりの要求数が、スケーラビリティのないサーバの速度よりも劣っている場合、パフォーマンスを伴わないスケーリングは無意味です(サーバが本当にスケールすると、多くのコアで実行する必要がある点があります拡張性のないサーバーよりも優れています)。

スケーリングせずに実行すると、サーバーはマルチコアCPUを利用できなくなります。

未来は確かに、すべての条件(わずか数個のコアまたは多数のコア)で最高のパフォーマンスを提供するために、両方を正しく行うサーバーアプリケーションから成り立ちます。

3
追加された

はい。

私はあなたの質問は、どちらか他が良いかどうかを仮定していますか?

どのような場合にはかなり複雑な質問ですが、一般的には複数のプロセッサーが優れた性能を発揮すると思います。

Here's a good answer describing the architecture of both: nginx : Its Multithreaded but uses multiple processes?

Nginxは各クライアントのリクエストに対して新しいプロセスを起動します。マルチスレッドではありませんが(スレッドの問題を回避しますが)、オペレーティングシステムは各プロセスを異なるCPU上でスケジューリングすることによって複数のコア/ CPUを利用できます。

0
追加された
しかし、なぜパフォーマンスは良いでしょうか? NGINXやApacheはマルチスレッドなのですか?
追加された 著者 nickb,
下のリンクのスライド#5にあなたが送ったそのリンクを使って、NGINXはシングルスレッドであると言います。この場合、なぜマルチコア/ procに利益があるのでしょうか? slideshare.net/joshzhu/nginx-internals
追加された 著者 nickb,

マルチスレッドシステムのみがマルチコアの恩恵を受けます。私は、Apacheがマルチスレッドであり、マルチコアでそのパフォーマンスが向上することを知っています。お互いに依存する必要のない小さな仕事に分けられる場合、通常、パフォーマンスはマルチコアになります。 ApacheはWeb要求を処理するプロセスを開始し、異なる要求を複数のコアで同時に実行できるため、パフォーマンスが向上します。 NGINXがシングルスレッドの場合は、マルチコアを活用しません。

マルチコア/マルチプロセッサは、この状況では同じものです。

0
追加された