〜1メガの応答をもたらす小さなクライアント要求を取得するNIOサーバーがあります。サーバーは、次を使用して新しいクライアントを受け入れます。
SocketChannel clientChannel = server.accept();
clientChannel.configureBlocking(false);
clientChannel.socket().setSendBufferSize(2 * 1024 * 1024);
次に、clientChannel.socket().getSendBufferSize() の結果を含む「client connected」行をログアウトします。
Windows では、セットはクライアント ソケットの送信バッファ サイズを 8k から 2メガに変更します。しかし、Linux では、ソケットは送信バッファが 131,071 バイトであると言います。
私の clientChannel.write は一度に 128k しか書き込まないため、これによりパフォーマンスが低下するため、すべてのデータを書き込むにはさらに 7 回のパスが必要です。Windows では、setSendBufferSize の変更によりパフォーマンスが大幅に向上しました。
Linux は、大きなソケット送信バッファを許可するように構成されているようです。
$ cat /proc/sys/net/ipv4/tcp_wmem
4096 16384 4194304