加速scp传输速度

当需要在机器之间传输400GB文件的时候,你就会非常在意传输的速度了。默认情况下(约125MB带宽,网络延迟17ms,Intel E5-2430,本文后续讨论默认是指该环境),scp的速度约为40MB,传输400GB则需要170分钟,约3小时,如果可以加速,则可以大大节约工程师的时间,让攻城师们有更多时间去看个电影,陪陪家人

1. 结论

声明:这里给出的测试数据不具有一般性,仅供参考。测试与数据本身特性有很大关系,本文使用InnoDB的redo log作为测试数据。

* 改变ssh加密算法,可以让速度更快;通常,越弱的加密算法,速度越快

通常压缩会降低scp速度,但这与数据类型有很大关系,对压缩率非常高的数据启用压缩,可以加速

* 压缩级别对传输效率影响很小

* 用于完整性校验的不同MAC( message authentication code)算法,对性能约有10%-20%的影响。

所以,简单尝试如下,让你的SCP速度double一下:

scp -r -c arcfour128 ...
scp -r -c aes192-cbc ...
scp -r -c arcfour128 -o "MACs [email protected]" ...

注:启用压缩使用参数: -o "Compression yes"

2. 测试数据:加密算法和压缩的影响

这里对比了12种ssh中实现的加密算法和是否使用压缩的传输效率,测试文件使用的是InnoDB的1GB*4的日志文件(注意:不同类型的文件测试结果会很不同),这里纵坐标单位为MB/s,数据分为压缩传输和不压缩传输两组:

原始数据:scp_speed.txt

可以看到,不同加密算法传输速度相差很大;使用了压缩之后,速度下降很多,也看到不同加密算法加密后区别并不大。

3. 关于是否启用压缩

* 压缩只有在网络传输速度非常慢,以致于压缩后节省的传输时间大于压缩本身的时间,这时才有效果,所以是否启用压缩,需要实际测试

* 压缩比很低的数据,不要再启用压缩(例如已经压缩过的数据、视频等)

* 通常建议,传输前先压缩,而不是使用ssh的压缩;建议使用pigz/lbizp2等并行压缩工具

* 数据中大量重复、空洞,这类适合压缩的数据,可以尝试压缩选项,例如如下是一组,大量"空洞"数据的测试:

看到,压缩大大提高了传输效率

4. "压缩级别"对传输速度影响不大

最后一组对比是,将压缩级别从1改到9,对比传输速度,纵坐标单位MB/s,对12种加密算法分别使用了测试9个压缩级别,数据如下:

大图链接 原始数据:scp-compression-level.txt

可以看到,压缩级别对传输影响较小。ssh使用的默认压缩级别是6。

5. 测试数据:完整性校验算法MACs选择

通过选项Macs可以设置对应的哈希算法,man ssh_config可以看到支持哪些哈希算法。这里对了比了12中加密算法下使用不用的完整性校验算法的性能情况:

查看大图

看到,绝大数情况下"[email protected]"(关于此哈希)性能都更好,所以建议尝试使用此哈希算法做验证,看看你的场景下速度是否与提升。也可以看到,默认的hmac-md5哈希在默认的加密aes128-ctr下表现比较好;

http://www.orczhou.com/index.php/2013/11/make-scp-faster-with-cipher-and-compression/

时间: 2024-11-05 17:26:37

加速scp传输速度的相关文章

用tsunami-udp加速网络传输

概述 tsunami-udp 是一款专为网络加速诞生的小工具. 思路很简单,使用TCP验证.UDP进行数据传输. 这样可以无状态的进行数据传输,然后中间加一些文件校验和重传机制,达到加速传输的目的. 传统的tcp传统,基于长连接,很容易受网络波动的影响.特别是网络拥塞的情况下,只能通过多进程/线程来进行有序传输. 安装 建议将 tsunami-udp 录入仓库,方便用yum一键安装: sudo yum -y install tsunami-udp    使用 安装完成后,在服务端(数据源)需要传

[转]12个scp传输文件的命令栗子

原文地址: https://www.cnblogs.com/voidy/p/4215891.html copy原文是为了修改部分错误以及便于记录自己的笔记.英文原文点:这里 安全复制 Scp(Secure Copy)是一个在各个主机之间进行复制或者文件传输的一个命令行工具.它使用一种同ssh一样的安全机制.事实上,它在后台使用ssh连接来进行文件的传输.scp既指一种定义安全复制应该如何工作的协议,也指一种可以被安装的作为OpenSSH工具套的一部分的软件或是指令. 在这篇简单的教程中,我们可以

Linux基础之-网络配置,主机名设置,ssh登陆,scp传输

一. 网络配置修改 1.临时修改(ip,dns,netmask,gateway) 临时修改网络配置,只要没有涉及到修改配置文件的,在network服务重启后,所有设置失效 2.永久修改(ip,dns,netmask,gateway) 修改网络配置文件"ifcfg-ens33",保存后就会永久生效 二. 集群内机器hostname及域名的设定 三. ssh登陆 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SS

STM32的bulk双缓冲传输速度的讨论,硬件的坑永远填不完

详情:http://bbs.21ic.com/forum.php?mod=viewthread&tid=109584 USB 1.0的最高12Mbps. USB 2.0的高速模式480Mbps,全速模式12Mbps,低速模式1.5Mbps 而是设置STM32端的USART的波特率.PC与STM32传输速度是以USB1.1的理论速度传输的,是不能设置的. 接收到数据,置NAK->将缓冲区数据拷贝到用户区(用户处理过程)->发ACK通知主机完成了完整的接收可以发送下一个->主机发送下

CDNJS:使用JavaScript CDN加速网站载入速度

架过站的朋友可能多少听过一些 JavaScript Framework,例如:jQuery.Prototype.MooTools 之类的,透过载入这些程式可以在网站里实现更多不同的效果或功能.目前在 Google Libraries API 甚至是 Microsoft Ajax CDN 都能够找到这些程式,但问题是他们只托管最常被用到的函式库,所以这篇文章要介绍另一个更好用的 JavaScript Libraries CDN - CDNJS. cdnjs.com 提供更多.更完整的 JavaSc

Delphi TCOM控件串口通信调试寻找文件传输速度慢的原因

PC工具: IC util 手持设备:Dynasty ARM嵌入式设备 通信设备: TTL-USB串口传输器 问题:IC_Util向dynasty传输所需的配置文件,传输速度慢. 传输10k大小的文件 顺利时耗时大约10s,文件分块传输,1k/block or 2k/block. 波特率115200 传输时对于接受和发送的函数需要做适当的延时处理,同时需要对传输时的block大小做一定规定,BLOCK为2k时传输正常,BLOCK为1k时IC_Util将会不时的出现接收超时的问题. Delphi串

优化网页传输速度1

对于大数据流的传输,首先要对数据进行物理优化: 即对传输的数据,进行压缩.这里我们采用gzip压缩,压缩率能达到70%~80%: 大大改善web网页传输速度. ByteArrayOutputStream arrayOutputStream =new ByteArrayOutputStream(); //采用gzip压缩传输的数据流:  GZIPOutputStream gop = new GZIPOutputStream(arrayOutputStream);   //此处一定要设置字符编码,否

网络传输速度bps与下载文件所需时间的换算

相信很多同志都非常关注自己家的计算机上网的宽带是多少.关心单位上网的宽带是多少! 但是很多同志都经常误解网络传输速度,以至于责备网络接入商(电信.网通.铁通等单位)欺骗用户,限制上网的速度! 本文,就给您详细介绍一下带宽中提到的bps与下载文件所需时间的换算! 先看下图! 这是我个人上网的宽带,注意拉,速度是"100.0Mbps": 到这里,俺想试问一个问题,以这样的速度,假设处于理想状态,那么,我下载100MB的文件,需要多少时间呢? 如果您回答,需要1秒钟,那么,您就错了,并且是完

【转】你的网卡真有千兆么?——千兆网卡传输速度解析

转自: R9IT技术网 随着PS3it技术的破解和可以利用电脑FTP向PS3传送文件,千兆网卡成为了不少玩家必备的工具.要知道PS3it技术本身自带千兆网卡,如果利用FTP软件以及电脑上的千兆网卡进行文件传输,其速度远比采用USB 2.0的外置硬盘来传输要快.但是在使用的过程中,玩家却发现,无论是采用电脑主板上自带的千兆网卡还是采用独立的千兆网卡,传输速度最多也只有40MB/s,远远达不到千兆网卡的速度,这到底是怎么回事?此外,在一些日常应用中,即使在千兆局域网中,传输速度也无法达到1Gbps,