远程机器上不错的rsync


25

使用rsync + ssh访问远程计算机时,是否有办法“很好”远程计算机上的rsync进程(降低其优先级)?

编辑问题以澄清问题:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(rsync线被截断)

这是一个备份cron作业,通常在凌晨4点运行,但是当我清醒时(提交或使用同一台计算机上托管的Bugzilla)时,它会降低服务器性能,因此我想快速尝试一下“ hack”以进行修复有点。

Answers:


35

您可以使用该--rsync-path选项,例如。

rsync --rsync-path="nice rsync" foo remotebox:/tmp/

15
您可能还考虑使用ionice,例如--rsync-path="ionice -c 3 nice rsync",尽管现代Linux会自动为处理良好的进程降低IO优先级(请参阅我链接的手册页)。
Jo Liss

我已经尝试过了,但是我的sshd仍在运行nice 0
Felipe Alvarez 2014年

在FreeBSD之类的没有系统的系统上ionice,设置该--bwlimit选项对于实现更好的rsync很有利。
deed02392

1
我也有一个问题,这个选项没有任何区别。原来,我要连接的服务器已在authorized_keys中配置为仅接受特定的rsync命令,该命令将覆盖--rsync-path我指定的选项。
安迪·贝弗利

7
  • 以该--rsync-path选项你有rsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • 使用配置文件选项,您可以更改或取消注释文件中/etc/default/rsyncRSYNC_NICE='17'值和RSYNC_IONICE='-c3'

对于两者,ionice值将优先用于硬盘

  • 1->实时
  • 2->尽力而为
  • 3->闲置(任何其他进程未使用HD时)

请注意,对于Linux,只有cfq调度程序才能真正实现IO类和优先级。如果远程系统管理员已选择IO调度noopdeadline或者一些更奇特变异你会发现,ionice真的什么都不做。cfq通过正确地调整cfq,人们应该能够从中获得高性能,并且仍然能够使用IO类和优先级。

为处理器优先级提供了不错的价值

  • -20(最有利于该过程)
  • (默认为10),如果未指定-n
  • 19(最不赞成该流程)

谁负责/etc/default/rsync?rsync本身是在读取该文件,还是由linux-flavor / distribution完成?
guettli '16

...我想我发现解决方案/etc/default/rsync是rsync守护程序模式的默认文件。我猜这仅适用于通过rsync-protocol连接到rsync守护程序的情况。我想如果您通过ssh调用它并不适用。
guettli '16

2

快速而肮脏的解决方案是创建一个名为'rsync'的小型包装脚本,该脚本在真实的rsync二进制文件之前将$ PATH屏蔽掉:

#!/bin/sh
nice -10 /path/to/proper/rsync $*

或设置authorized_keys文件,以便它执行rsync的nicing。(假设您正在使用ssh键)。

例:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

现在在您的/home/user/bin/nice-rsync.sh中

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

高温超导


2

您可以通过不包含-z参数来禁用网络上的压缩,这样可以节省双方的CPU时间。或更改rsync使用校验和的方式,看看--checksum


我接受了Hasturkun的回答(因为它回答了我的问题),但是您提出了一个很好的观点:我对压缩进行了基准测试,而没有压缩进行了基准测试,并且仅增加了2分钟的工作时间。我只是习惯于将-avz用作我的标志,以至于我从未想过删除-z。
mwalling

我的习惯是使用-aPh,很少使用-z
Rory

0

Rsync不应使用太多CPU。我怀疑您是否可以从另一端强求某种美感,但是您可以做的是限制rsync与防火墙一起使用的带宽,这最终将减少X时间内它可以进行的处理量。


从“ ps aux”添加了一些输出,以显示它在CPU方面的工作。我正在通过一个缓慢的链接,因此我打开了--compress选项,但它还会引起大量的磁盘访问,我希望通过使用不错的(意想不到的副作用)来
关闭它

设置好值通常也会影响I / O的好感,这正是人们通常想要的。
Bram Schoenmakers

rsync不需要太多的CPU,但是它可能会显示出来,top具体取决于当前内核是否认为I / O等待很忙。此外,如果任何其他进程需要访问存储并被rsync允许全速运行,则所有其他进程都会因此而变慢。
Mikko Rantalainen

-7

我不这么认为,您需要一个自定义解决方案。


6
你知道,那是个好主意。谁需要rsync的所有功能,例如能够在ssh上运行,而无需在远程计算机上运行守护程序(以及ssh的固有加密),传输压缩,恢复下载,仅传输差异……这就是所有功能肿。我现在要回家,并使用PS / 2 System 60来传送一些动漫!
mwalling

请删除此答案,因为它无法回答问题,并且提供的替代方案明显比问题中的示例差。
user1133275
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.