我使用python的ftplib跨本地網絡將大量和大量數據(〜100個文件X 2GB)傳輸到FTP服務器。這段代碼在Ubuntu上運行。這裏是我的電話(個體經營是我FtpClient對象,它是圍繞FTPLIB客戶的包裝):Python ftplib最佳塊大小?
# Store file.
self.ftpClient.storbinary('STOR ' + destination, fileHandle, blocksize = self.blockSize, callback = self.__UpdateFileTransferProgress)
我的問題是,我該如何選擇一個最佳的塊大小?我的理解是,最佳塊大小取決於許多因素,其中最重要的是連接速度和延遲。我的代碼將在許多不同的網絡上運行,速度不同,全天擁塞不定。理想情況下,我想在運行時計算最佳塊大小。
最佳FTP傳輸塊大小是否與最佳TCP窗口大小相同?如果這是真的,並且打開了TCP窗口縮放,有沒有辦法從內核獲得最佳的TCP窗口大小? Linux內核如何/何時確定最佳窗口大小?理想情況下,我可以向Linux內核請求最佳塊大小,以避免重新發明輪子。
只要網絡I/O比磁盤慢的I/O,[內核應該注意的是你(HTTP ://en.wikipedia.org/wiki/Nagle%27s_algorithm)。你也可以考慮設置'TCP_CORK'選項。 – Phillip
你在這裏期待或使用什麼類型的併發?這是否是一個單線程應用程序?您可以從多路複用異步I/O中受益嗎? –