質問: より多くのcpuコアを持つことは、webサーバーを実行するためのより良いものですか? wikipedia でユーザースレッドがカーネルスレッドにどのようにマップされるかについて読んでいました。この記事から、freebsdが1:1(カーネルレベルのスレッド化)を使用していることがわかります。したがって、アプリケーションによって作成された各ユーザースレッドは、カーネルスレッドにマップされます。スレッド内の新しい各要求を処理するwebサーバーを構築していて、freebsdで実行していると想定すると、コアの数が増えてアプリケーションの全体的なパフォーマンスが向上しますか?私はこの質問を読みました cpuコア:多いほど良いですか? ですが、ユーザースレッドとカーネルスレッド間の1:1マッピングによって回答の範囲が特に影響を受けるようにしたいと思います。
回答: いつものように、答えはそれが依存するということです。たとえば、スレッドを使用していなくても、 nginx webサーバー 非常によく機能します です。代わりに、イベント駆動型アーキテクチャを使用します。複数のワーカープロセスを使用できるため、複数のコアを使用できます。リンクされたパフォーマンス測定でわかるように、同時接続の量が増えると、スレッド化されたapache webサーバーはより多くのスレッドを生成し、より多くのメモリを使用します。 nginxが使用するメモリの量はほぼ一定です。また、1秒あたりに処理されるリクエストの量では、nginxはapacheに大幅に勝っています。したがって、スレッドが常に最良のソリューションであるとは限りません。パフォーマンスは、データが存在する場所にも依存します。ハードディスクにパークされている場合、ramにある場合と比較してアクセスが遅くなり、ramはプロセッサキャッシュよりもはるかに遅くなります。 webサーバーを高速化したい場合は、 varnish のようなアクセラレータの使用を検討してください。 webサービスのパフォーマンスに関するワニスの筆頭著者による この記事 を読むことを検討してください。ここでのメッセージは、オペレーティングシステムの組み込みのチャッキングメカニズムを使用する必要があり、自分で同じ仕事をしようとしないでくださいということです。