algorithm - 为 FTP 和 HTTP 传输选择缓冲区大小

标签 algorithm http ftp communication

在实现低级 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/

相关文章:

php - 如何通过 Swift 使用 multipart/form-date 将文件发送到服务器

c++ - 区间链表

algorithm - 数据结构预处理给定的 N 点集并给定查询并行带输出所有点都位于带内

javascript - TypeError : client. getReceiver 不是 azure-iot-device-http 示例中的函数

linux - 在 ftp 中使用通配符进行文件处理

ftp - 使用 Apache FtpClient 计算 FTP 服务器中的文件校验和

algorithm - 提供一个用 O(nlogn) 执行的算法来解决以下问题

javascript - 最小距离哈密顿路径 Javascript

java - 如何让我的 Android 应用程序更快地接收/发送数据?