我试图找出通过网络在两个系统之间传输大量数据的最佳方法。我目前正在研究 FTP、HTTP 或 RSync,我想知道哪一个最快。我在网上寻找一些答案并找到了以下网站:
- http://daniel.haxx.se/docs/ftp-vs-http.html http://daniel.haxx.se/docs/ftp-vs-http.html
- http://www.isi.edu/lsam/publications/http-perf/ http://www.isi.edu/lsam/publications/http-perf/
问题是这些已经过时了,并且更多地讨论了协议通信方式之间的理论差异。我对实际基准更感兴趣,可以说,对于特定设置,当传输不同大小的文件时,一种协议比其他协议快 x%。
有人测试过这些并将结果发布在某处吗?
好吧,所以我设置了以下测试:
- 硬件:2 台台式机 Intel Core Duo CPU @ 2.33GHz,具有 4G RAM。
- 操作系统:两台机器上的 Ubuntu 11.10
- 网络:100Mb专用交换机,两台机器都连接到它。
- Software:
- Python HTTP 服务器(受此启发 https://gist.github.com/1227973).
- Python FTP 服务器(受此启发 http://code.google.com/p/pyftpdlib/source/browse/trunk/demo/basic_ftpd.py).
- Python HTTP 客户端(受此启发 http://code.activestate.com/recipes/146306-http-client-to-post-using-multipartform-data/).
- Python FTP 客户端(受此启发 http://zephyrfalcon.org/weblog/arch_d7_2003_06_28.html#e262).
我将以下几组文件上传到每个服务器:
- 1个100M文件。
- 10个10M文件。
- 100 个 1M 文件。
- 1,000 个 100K 文件。
- 10,000 个 10K 文件。
我在多次运行中得到了以下平均结果(以秒为单位的数字):
|-----------+---------+----------|
| File Size | FTP (s) | HTTP (s) |
|-----------+---------+----------|
| 100M | 8 | 9 |
| 10M | 8 | 9 |
| 1M | 8 | 9 |
| 100K | 14 | 12 |
| 10K | 46 | 41 |
|-----------+---------+----------|
因此,似乎 FTP 在大文件中稍快一些,而 HTTP 在许多小文件中稍快一些。总而言之,我认为它们是具有可比性的,并且服务器实现比协议重要得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)