歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 加速scp傳輸速度

加速scp傳輸速度

日期:2017/2/28 14:36:53   编辑:Linux教程

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

目錄

  • 1. 結論
  • 2. 測試數據:加密算法和壓縮的影響
  • 3. 關於是否啟用壓縮
  • 4. "壓縮級別"對傳輸速度影響不大
  • 5. 測試數據:完整性校驗算法MACs選擇
  • 6. 參考閱讀

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個壓縮級別,數據如下:

原始數據:

MB/s            with-compression  without-compressoin
3des-cbc        17.525            13.5
aes256-ctr      20.325            30.2
aes192-ctr      20.275            35.1
aes128-ctr      20.275            38.5
cast128-cbc     20.825            38.9
blowfish-cbc    20.8              43.1
arcfour         21.975            74.2
arcfour128      21.725            75
arcfour256      22.025            75.8
aes128-cbc      21.6              75.8
aes256-cbc      21.325            80.1
aes192-cbc      21.725            85.2

可以看到,壓縮級別對傳輸影響較小。ssh使用的默認壓縮級別是6。

5. 測試數據:完整性校驗算法MACs選擇

通過選項Macs可以設置對應的哈希算法,man ssh_config可以看到支持哪些哈希算法。這裡對了比了12中加密算法下使用不用的完整性校驗算法的性能情況:

看到,絕大數情況下"[email protected]"(關於此哈希)性能都更好,所以建議嘗試使用此哈希算法做驗證,看看你的場景下速度是否與提升。也可以看到,默認的hmac-md5哈希在默認的加密aes128-ctr下表現比較好;

Copyright © Linux教程網 All Rights Reserved