测试环境

1.1服务器硬件信息

rsync传输性能测试总结_测试

1.2 服务器软件信息

rsync传输性能测试总结_linux_02 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隧道加密传输,启用压缩,不启用数据校验

rsync传输性能测试总结_性能_03

2、SSH隧道加密传输,未启用压缩,不启用数据校验

rsync传输性能测试总结_性能_04

3、数据分析:

Rsync在传输时,不启用压缩,比启用压缩要快将近10倍

压缩使用的场合:低带宽,或对带宽有要求。传输文件压缩比率大

非压缩适用的场合:带宽充足,传输文件比较大,传输文件压缩比率小

建议不启用压缩

2.3 传输数据校验测试

1、SSH隧道加密传输,未启用压缩,不启用数据校验

rsync传输性能测试总结_linux_05

2、SSH隧道加密传输,未启用压缩,启用数据校验

rsync传输性能测试总结_测试_06

3、数据分析:

Rsync在传输时,启用数据校验,比不启用数据校验多耗时30%

文件校验使用的场合:对文件完整性要求高

非文件校验适用的场合:对文件完整性要求低

建议使用文件校验

2.4 传输方式测试

1、SSH隧道加密传输,未启用压缩,启用数据校验

rsync传输性能测试总结_rsync_07

2、rsync server传输,未启用压缩,启用数据校验

rsync传输性能测试总结_休闲_08

3、数据分析:

SSH隧道传输,速度比rsync server要快,但CPU资源消耗比较高,加密耗时较多

SSH隧道传输适用的场合:安全性要求比较高,对CPU资源消耗要求低

rsync server适用的场合:对安全性要求比较低,对CPU资源消耗要求高。

建议使用SSH加密隧道模式传输

2.5 其他影响传输速度的因素

1、SSH加密算法影响文件传输速度

rsync传输性能测试总结_rsync_09 

注:以上文件传输测试过程中未启用压缩,未启用数据校验

使用SSH加密隧道传输时,如果希望数据传输较快,建议使用arcfour弱加密算法

2、修改TCP/IP协议字段,--protocol=29

(1)SSH隧道加密传输,未启用压缩,启用数据校验,不修改TCP/IP协议字段

rsync传输性能测试总结_rsync_10

(2)SSH隧道加密传输,未启用压缩,启用数据校验,修改TCP/IP协议字段为29

rsync传输性能测试总结_性能_11

(3)数据分析:

修改TCP/IP协议字段,传输速度有了明显的提升。但是由于使用SSH加密隧道,程序运行耗时依旧很多。

建议修改TCP/IP协议字段为29

附: TCP/IP协议字段号

rsync传输性能测试总结_测试_12

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参数对带宽进行限制