rsync傳輸性能測試總結

測試環境

1.1服務器硬件信息

p_w_picpath

1.2 服務器軟件信息

p_w_picpath 1.3 Rsync所能夠支持的功能

(1)支持斷點續傳

(2)支持使用ssh傳輸加密

(3)支持128位MD4校驗(3.0以後版本使用MD5加密)

(4)支持鏡像

(5)支持限速

(6)支持目錄層級遞歸拷貝

1.4常用Rsync參數詳解

-a, --archive

It is a quick way of saying you want recursion and want to preserve almost everything.

-r, --recursive

This tells rsync to copy directories recursively.

-t, --times

This tells rsync to transfer modification times along with the files and update them on the remote system

-u, --update

This forces rsync to skip any files for which the destination file already exists and has a date later than the source file

-z, --compress

With this option, rsync compresses any data from the files that it sends to the destination machine

-P

斷點續傳 詳細顯示傳輸過程(傳輸進度)

-c, --checksum

This forces the sender to checksum all files using a 128-bit MD4 checksum before transfer

-n, --dry-run

This tells rsync to not do any file transfers, instead it will just report the actions it would have taken.

--delete

This tells rsync to delete any files on the receiving side that aren't on the sending side

--bwlimit=KBPS

This option allows you to specify a maximum transfer rate in kilobytes per second

--protocol

(隱藏參數)

選擇傳輸時使用的TCP/IP協議字段號

-B

--block-size=SIZE checksum blocking size (default 700)

1.5服務器邏輯

兩臺服務器相鄰,在同一個機房

1.6 rsync server模式配置

1、目標主機(DST)設置:

(1)添加rsyncd.conf配置文件

cat>/etc/rsyncd.conf<<EOF

uid=root

gid=root

secrets file = /etc/rsyncd.secrets

max connections=36000

use chroot=no

log file=/var/log/rsyncd.log

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsyncd.lock

[rsyncDST]

path=/home/work/rsyncDST/share/1/0/

comment = rsync test

ignore errors = no

read only = no

hosts allow =10.0.101.241

hosts deny = *

EOF

(2)配置rsync.secrets認證文件

cat>/etc/rsyncd.secrets<<EOF

rsync:123456

EOF

(3)修改rsync.secrets認證文件權限

chmod 600 /etc/rsyncd.secrets

(4)啓動rsync server

/usr/local/rsync/bin/rsync --daemon

 

Rsync傳輸測試

2.1初始化

(1)將兩臺機器加入監控

(2)將兩臺服務器建立SSH信任關係

2.2 傳輸壓縮測試

1、SSH隧道加密傳輸,啓用壓縮,不啓用數據校驗

p_w_picpath

2、SSH隧道加密傳輸,未啓用壓縮,不啓用數據校驗

p_w_picpath

3、數據分析:

Rsync在傳輸時,不啓用壓縮,比啓用壓縮要快將近10倍

壓縮使用的場合:低帶寬,或對帶寬有要求。傳輸文件壓縮比率大

非壓縮適用的場合:帶寬充足,傳輸文件比較大,傳輸文件壓縮比率小

建議不啓用壓縮

2.3 傳輸數據校驗測試

1、SSH隧道加密傳輸,未啓用壓縮,不啓用數據校驗

p_w_picpath

2、SSH隧道加密傳輸,未啓用壓縮,啓用數據校驗

p_w_picpath

3、數據分析:

Rsync在傳輸時,啓用數據校驗,比不啓用數據校驗多耗時30%

文件校驗使用的場合:對文件完整性要求高

非文件校驗適用的場合:對文件完整性要求低

建議使用文件校驗

2.4 傳輸方式測試

1、SSH隧道加密傳輸,未啓用壓縮,啓用數據校驗

p_w_picpath

2、rsync server傳輸,未啓用壓縮,啓用數據校驗

p_w_picpath

3、數據分析:

SSH隧道傳輸,速度比rsync server要快,但CPU資源消耗比較高,加密耗時較多

SSH隧道傳輸適用的場合:安全性要求比較高,對CPU資源消耗要求低

rsync server適用的場合:對安全性要求比較低,對CPU資源消耗要求高。

建議使用SSH加密隧道模式傳輸

2.5 其他影響傳輸速度的因素

1、SSH加密算法影響文件傳輸速度

p_w_picpath 

注:以上文件傳輸測試過程中未啓用壓縮,未啓用數據校驗

使用SSH加密隧道傳輸時,如果希望數據傳輸較快,建議使用arcfour弱加密算法

2、修改TCP/IP協議字段,--protocol=29

(1)SSH隧道加密傳輸,未啓用壓縮,啓用數據校驗,不修改TCP/IP協議字段

p_w_picpath

(2)SSH隧道加密傳輸,未啓用壓縮,啓用數據校驗,修改TCP/IP協議字段爲29

p_w_picpath

(3)數據分析:

修改TCP/IP協議字段,傳輸速度有了明顯的提升。但是由於使用SSH加密隧道,程序運行耗時依舊很多。

建議修改TCP/IP協議字段爲29

附: TCP/IP協議字段號

p_w_picpath

3、其他

rsync server模式,未啓用壓縮,啓用數據校驗,修改TCP/IP協議字段爲29。

傳輸平均速度在120MB/S以上。傳輸耗時3m2.584s

rsync server模式,未啓用壓縮,未啓用數據校驗,修改TCP/IP協議字段爲29。

傳輸平均速度在122MB/S以上。傳輸耗時2m14.185s

測試過程中,調節—block-size參數等於512,可以縮短checksum時間,總傳輸時間可節省大概3s左右

根據當前生產環境,以及測試數據,我得出的結論如下:

1、 如果對數據安全性要求低,建議選擇rsync server模式,未啓用壓縮,啓用數據校驗,修改TCP/IP協議字段號爲29。

2、 如果對數據安全性要求高,建議選擇SSH隧道加密傳輸,arcfour弱加密算法,未啓用壓縮,啓用數據校驗,修改TCP/IP協議字段號爲29

3、 如果是第一次推送數據,建議加上-W參數,意思是不檢查文件更新,直接傳送整個文件,這樣可以減少文件檢測時間,節省程序總運行時間。

4、 如果想進一步節省程序運行時間,可在使用checksum的同時,加上—block-size=512這個參數(默認是700)。數值建議是500以上,並且是2的N次方,最大不超過2048。推薦512,1024,2048這三個值。

5、 在傳輸數據時,爲了不影響線上正常業務,建議根據線上實際情況,通過—bwlimit=KPBS參數對帶寬進行限制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章