我正在使用Python的ftplib将大量数据(~100个文件X 2GB)通过本地网络传输到FTP服务器。这段代码正在Ubuntu上运行。这是我的调用方式(self是我的FtpClient对象,它是ftplib客户端的包装器):
# Store file.
self.ftpClient.storbinary('STOR ' + destination, fileHandle, blocksize = self.blockSize, callback = self.__UpdateFileTransferProgress)
我的问题是如何选择最佳的块大小?我的理解是最佳块大小取决于许多因素,其中不少是连接速度和延迟。我的代码将在许多不同的网络上运行,这些网络具有不同的速度,并且在整个一天中拥塞程度也不同。理想情况下,我想在运行时计算出最佳块大小。
最佳FTP传输块大小是否与最佳TCP窗口大小相同?如果是这样的话,并且TCP窗口缩放已打开,有没有一种方法可以从内核获取最佳TCP窗口大小?Linux内核是如何确定最佳窗口大小的?理想情况下,我可以向Linux内核询问最佳块大小,以避免重复造轮子。
TCP_CORK
选项。 - Phillip