在实现低级 HTTP 和 FTP 传输时,如何选择缓冲区的大小(我从套接字读取或写入的字节数)以获得最大吞吐量?我的应用程序应该在 130 Kbps 到 3 Mbps 的连接上使用 HTTP 或 FTP 传输数据(我事先知道预期的速度)。有时是单向传输,有时是双向传输。我应该坚持使用一些平均缓冲区大小,还是必须根据连接速度改变它?
谢谢。
最佳答案
选择超过 8KB 的缓冲区大小。 9000 通常是最快网络中使用的最大 MTU(最大传输单元)大小。
当您使用大于连接的 MTU 的缓冲区时,操作系统会根据需要将其分解为 MTU 大小的片段,因此您在 MTU 上使用的任何内容对网络性能的影响都很小。
但是,使用大缓冲区可能会对性能产生其他影响,如果您正在传输文件,那么使用大缓冲区可能会提高读取性能,从而提高应用程序的速度。
所以,通常选择一个像 16KB 这样好的整数是个好主意。绝对不要低于 1500,因为这会对网络性能产生负面影响(导致操作系统有时会发送小数据包,从而降低网络性能)。
关于algorithm - 为 FTP 和 HTTP 传输选择缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/282504/