我正试图找出在两个系统之间通过网络传输大量数据的最佳方法。我目前正在研究FTP,HTTP或RSync,我想知道哪一个是最快的。我在网上找了一些答案,发现了以下网站:
问题是这些都是旧的,并且更多地谈论协议如何通信之间的理论差异。我对实际的基准测试更感兴趣,可以说对于特定的设置,当传输不同大小的文件时,一个协议比其他协议快x%。
有人测试过这些并将结果发布到某个地方吗?
答案 0 :(得分:34)
好的,我设置了以下测试:
我将以下文件组上传到每台服务器:
我在多次运行中获得了以下平均结果(以秒为单位的数字):
|-----------+---------+----------|
| File Size | FTP (s) | HTTP (s) |
|-----------+---------+----------|
| 100M | 8 | 9 |
| 10M | 8 | 9 |
| 1M | 8 | 9 |
| 100K | 14 | 12 |
| 10K | 46 | 41 |
|-----------+---------+----------|
因此,似乎FTP在大文件中的速度稍快,而且在许多小文件中HTTP速度要快一些。总而言之,我认为它们具有可比性,服务器实现比协议更重要。
答案 1 :(得分:7)
如果每端的机器相当强大(即不是上网本,NAS机箱,烤面包机等),那么我希望所有通过TCP工作的协议在传输批量数据时的速度大致相同。应用程序协议的工作实际上只是填充TCP传输的缓冲区,因此只要它们能够保持完整,TCP就会设置速度。
执行压缩或加密的协议可能会在功能较弱的计算机上阻塞CPU。我的上网本比FTP快得多。
rsync可以快速传输增量更改,但对于批量传输而言,它没有优于dumber协议的优势。
答案 2 :(得分:4)
要考虑的另一个实用程序是bbcp:http://www.slac.stanford.edu/~abh/bbcp/。
使用它的好的,但过时的教程在这里:http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm。我发现bbcp非常擅长传输大文件(多个GB)。根据我的经验,它平均比rsync快。
答案 3 :(得分:3)
rsync可选择压缩其数据。这通常会使转移速度更快。请参阅rsync -z。
您没有提到scp,但scp -C也会压缩。
请注意,压缩可能会使传输速度更快或,具体取决于CPU和网络链接的速度。 (较慢的链接和较快的CPU使压缩成为一个好主意;更快的链接和更慢的CPU使压缩成为一个坏主意。)与任何优化一样,在您自己的环境中测量结果。
答案 4 :(得分:2)
我担心如果您想知道您的需求和设置的答案,您要么必须更具体,要么进行自己的性能(和可靠性)测试。它确实有助于至少基本了解有关协议及其通信,因此我认为您引用的文章是一个有用的资源。它还有助于了解这些协议的早期发明者面临哪些限制 - 他们的目标是保持低网络影响,他们是内存匮乏,还是他们必须计算他们的cpu周期?如果您想根据自己的情况找到答案,可以考虑或回答以下几点:
需要考虑很多事情,我确信列表还不完整。