質問: このような要素は同時に確立できたTCPコネクションの最大の数に影響すると思います。 * ネットワークの帯域とNICの速さ * SYN queueとaccept queueの長さ * open fdの最大の数(RLIMIT_NOFILE) * Nginxの設置、`worker_connections`, `worker_cpu_affinity`, `worker_processes`... * メモリー **CPUのコア数**も重要な要素なのか教えていただけませんか。 CPUのコア数は多ければ多いほど、同時に処理できるネットワークの割り込みも多くなるかもしれません。
回答: TCP/IPの処理そのものでいえば、OSやTCP/IPスタックがマルチプロセッサを考慮していればコア数も重要な要素になり得ますし、マルチプロセッサを考慮していなければいくらコアがあっても無駄ということになります。 アプリケーション(Webサーバ)まで含めて考えれば、TCP/IPそのものの処理に1コアしか使われないとしても、サーバがリクエストを受け取って応答を生成してレスポンスを返すという処理が並列で実行できるために、多くのコアがあれば結果として裁けるコネクションが増えるという可能性はあります。逆に言えば、アプリケーション側がへぼいといくらそれより下のレイヤが高スペックでもまったく性能が出ない、ということもあります。 つまり、単一の要素だけ見ても意味がなく、全体を考慮することが必要です。