|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你让他去用linux搭建一个web服务器,做一个linux网关,他就什么都不会了.他们把时间都浪费在了版本的转换上了.
我们常常必要在呆板之间传输文件。好比备份,复制数据等等。这个是很罕见,也是很复杂的。用scp大概rsync就可以很好的完成义务。可是假如文件很年夜,必要占用一些传输工夫的时分,如何又快又好地完成义务就很主要了。在我的测试用例中,一个最好的计划比最差的计划,功能进步了10倍。
复制文件
假如我们是复制一个未紧缩的文件。这里走以下步骤:
- 紧缩数据
- 发送到别的一台呆板上
- 数据解紧缩
- 校验准确性
如许做会很无效率,数据紧缩后能够更无效的使用带宽
利用ZIP+SCP
我们能够经由过程ZIP+SCP的组合完成这个功效。
- gzip-c/home/yankay/data|sshyankay01"gunzip-c->/home/yankay/data"
复制代码 这条命令是将/home/yankay/data经由GZIP紧缩,经由过程ssh传输到yankay01的呆板上。
data文件的巨细是1.1GB,经由Zip紧缩后是183MB,实行下面的命令必要45.6s。均匀吞吐量为24.7MB/s
我们会发明Scp也有紧缩功效,以是下面的语句能够写成
- scp-C-cblowfish/home/yankay/datayankay01:/home/yankay/data
复制代码 如许运转效果是不异的,欠亨的地方在于我利用了blowfish算法作为Scp的密匙算法,利用这个算法能够比默许的情形快良多。单单对与scp,利用了blowfish吞吐量是62MB/s,不利用只要46MB/s。
但是我实行下面一条命令的时分,发明仍是必要45s。均匀吞吐量还为24MB/s。没有涓滴的提拔,可见瓶颈不在收集上。
那瓶颈在那里呢?
功能剖析
我们先界说几个变量
- 紧缩工具的紧缩比是CompressRadio
- 紧缩工具的紧缩吞吐是CompressSpeedMB/s
- 收集传输的吞吐是NetSpeedMB/s
因为利用了管道,管道的功能取决于管道中最慢的部分的功能,以是全体的功能是:
speed=min(NetSpeed/CompressRadio,CompressSpeed)
当紧缩吞吐较收集传输慢的时分,紧缩是瓶颈;但收集较慢的时分,收集传输/吞吐是瓶颈。
依据现有的测试数据(纯文本),能够失掉表格:
紧缩比吞吐量千兆网卡(100MB/s)吞吐量千兆网卡吞吐量,基于ssh(62MB/s)百兆网卡(10MB/s)吞吐量ZLIB35.80%9.69.69.69.6LZO54.40%101.7101.7101.718.38235294LIBLZF54.60%134.3134.3113.553113618.31501832QUICKLZ54.90%183.4182.1493625112.932604718.21493625FASTLZ56.20%134.4134.4110.320284717.79359431SNAPPY59.80%189167.2240803103.678929816.72240803NONE100%3001006210
能够看出来。在千兆网卡下,利用QuickLZ作为紧缩算法,能够到达最高的功能。假如利用SSH作为数据传输通道,则远远没有到达网卡能够到达的最好功能。在百兆网卡的情形下,各个算法邻近。对照上去QuickLZ是有上风的。
关于分歧的数据和分歧的呆板,能够得出分歧的最好紧缩算法。但有一点是一定的,只管把瓶颈压在收集上。关于较慢的收集情况,高紧缩比的算法会对照有上风;相否决于较快的收集情况,高压缩比的算法会更好。
结论
依据下面的剖析了局,我们不克不及是用SSH作为收集传输通道,可使用NC这个基础收集工具,进步功能。同时利用qpress作为紧缩算法。- scp/usr/bin/qpressyankay01:/usr/bin/qpresssshyankay01"nc-l12345|qpress-dio>/home/yankay/data"&qpress-o/home/yankay/data|ncyankay0112345
复制代码 第一行是将gpress安装到远程呆板上,第二行在远程呆板上利用nc监听一个端口,第三行紧缩并传送数据。
实行下面的命令必要2.8s。均匀吞吐量为402MB/s,比利用Gzip+Scp快了16倍!!
依据上文的公式,和本人的数据,能够绘出下面的表格,就能够选择出最合适的紧缩算法和传输体例。到达中意的效果。假如是一个临时运转的剧本的话,这么做是值得的。
当你经过一段时间的学习后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令。 |
|