高いパフォーマンスが要求されるサーバーを作成しようとしています。この質問は、サーバー コアを扱います。高速なパフォーマンスをサポートするのに最適なプログラミングのアイデアは何ですか?
- ソケットを異なるスレッドに分割し、それぞれでブロッキング recv() を呼び出しますか?
- select() ループに座って、別のスレッドに個々のポートを処理するように通知する 1 つのスレッドがありますか?
- select() と応答を処理するスレッドが 1 つありますか?
- 2 つまたは 3 つを行いますが、すべてのポートではなくポートのクラスターを使用しますか?
- 上で指定したように select を使用する場合、ブロッキング ポートと非ブロッキング ポートの使用は重要ですか?
- TCP_NODELAY など、どのような setsockopt がパフォーマンスを向上させますか?
これらのいくつかはユースケースに依存することを認識しています。たとえば、TCP_NODELAY をオフにした 6 は、小さなパケットが多数ある場合に悪影響を及ぼします。3 は、応答が些細な場合に高速になる可能性があるように聞こえます。パフォーマンスに影響を与えるとは思わなかった他の質問も歓迎します。