3

リクエストごとに大量のデータ(約1〜2ギガ)を転送する必要があるサーバーがあります。送信する各呼び出しに必要なデータの推奨量はどれくらいですか?それは重要ですか?

4

2 に答える 2

1

パケット サイズは、プロトコルの最大転送単位 (MTU) によって制限されます。MTU より大きいパケットを送信すると、パケットの断片化が発生します。

いくつかの計算を行うことができます: http://www.speedguide.net/articles/mtu-what-difference-does-it-make--111 その他の参考文献: http://en.wikipedia.org/wiki/Maximum_transmission_unit

しかし、最終的に私の提案は、あなたが十分に良いことを目指してOSネットワーク層にその仕事をさせれば、生のソケットをプログラミングしたり、いくつかのファンキーなオプションを渡したりしない限り、OSがネットワークバッファを持ち、しようとするのはかなり一般的です.最善を尽くします。

この最後のオプションを考慮すると、socket.send() はユーザー プロセス メモリからカーネルのプライベート メモリへのメモリ転送に他なりません。経験則として、仮想メモリ ページ サイズhttp://en.wikipedia.org/wiki/Page_(computer_memory ) (通常は 4KB) を超えないようにしてください。

于 2012-11-16T04:15:45.920 に答える
1

TCP/IP スタックは、PATH MTU よりも大きいパケットを送信しないように処理します。MTU よりも小さいパケットを送信するようにするには、スループットに役立たない方法でかなり苦労する必要があります。特定の接続のパス PTU が実際に何であるかを明らかにします。そのため、パス MTU については考慮しないでください。

すべてsend()をできるだけ大きくすることができますし、そうすべきです。

于 2012-11-16T06:41:29.483 に答える