加速scp傳輸速度

當須要在機器之間傳輸400GB文件的時候,你就會很是在乎傳輸的速度了。默認狀況下(約125MB帶寬,網絡延遲17ms,Intel E5-2430,本文後續討論默認是指該環境),scp的速度約爲40MB,傳輸400GB則須要170分鐘,約3小時,若是能夠加速,則能夠大大節約工程師的時間,讓攻城師們有更多時間去看個電影,陪陪家人php

1. 結論

聲明:這裏給出的測試數據不具備通常性,僅供參考。測試與數據自己特性有很大關係,本文使用InnoDB的redo log做爲測試數據。算法

* 改變ssh加密算法,可讓速度更快;一般,越弱的加密算法,速度越快網絡

一般壓縮會下降scp速度,但這與數據類型有很大關係,對壓縮率很是高的數據啓用壓縮,能夠加速ssh

* 壓縮級別對傳輸效率影響很小工具

* 用於完整性校驗的不一樣MAC( message authentication code)算法,對性能約有10%-20%的影響。性能

因此,簡單嘗試以下,讓你的SCP速度double一下:測試

scp -r -c arcfour128 ...
scp -r -c aes192-cbc ...
scp -r -c arcfour128 -o "MACs umac-64@openssh.com" ...

注:啓用壓縮使用參數: -o "Compression yes"加密

2. 測試數據:加密算法和壓縮的影響

這裏對比了12種ssh中實現的加密算法和是否使用壓縮的傳輸效率,測試文件使用的是InnoDB的1GB*4的日誌文件(注意:不一樣類型的文件測試結果會很不一樣),這裏縱座標單位爲MB/s,數據分爲壓縮傳輸和不壓縮傳輸兩組:spa

 

原始數據: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中加密算法下使用不用的完整性校驗算法的性能狀況:

 

查看大圖

看到,絕大數狀況下"umac-64@openssh.com"(關於此哈希)性能都更好,因此建議嘗試使用此哈希算法作驗證,看看你的場景下速度是否與提高。也能夠看到,默認的hmac-md5哈希在默認的加密aes128-ctr下表現比較好;

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

相關文章
相關標籤/搜索