我正在尝试运行 Rsync 将静态文件从我们的专用服务器移动到我们的新云服务器。
以下命令有效,但运行时它会停止正在提供的所有网页
rsync -azP --delete -e 'ssh -p 1234'
/var/www/vhosts/example.com/httpdocs/images/20*
user@server:/var/www/vhosts/example.com/httpdocs/images/.
因此我尝试使用nice
和ionice
降低 CPI 和 I/O 优先级,并通过 SSH 使用不同的密码 - 我发现帖子表明这会降低服务器负载:
nice -n19 ionice -c2 -n7 rsync -azP --delete --rsh="ssh -c arcfour" -e 'ssh -p 1234'
/var/www/vhosts/example.com/httpdocs/images/20*
user@server:/var/www/vhosts/example.com/httpdocs/images/.
但这没有什么区别,只要脚本在页面上运行http://example.com停止服务,一旦我使用 CTRL+C 来终止 Rsync 命令,页面就会再次开始服务。
我可以将其放入 crontab 作业中,在网站流量较低时运行,但我希望能够全天同步服务器。
有没有办法让 Rsync 停止阻止 apache 或者是否有其他方法可以传输数据?
我也尝试过创建一个tar.gz
档案并通过 进行传输scp
,但是文件有 2.5GB,我还是遇到了同样的问题。
我们将把所有静态内容移到 Amazon S3 上 - 但这是一个更大的工作,我希望在此期间可以把静态内容移过去,以淘汰旧机器
答案1
我不认为 Apache 会在传输过程中停止服务。我能想到的四个因素可能会拖慢 Apache 的速度。
- 带宽饱和。
--bwlimit
启动 rsync 时使用。 - CPU(尽管 rsync 应该不是问题)。用于
top
监控。使用nice
或renice
降低优先级。 - 磁盘 IO。
ionice
以空闲优先级使用。 - 内存。考虑减少 Apache 子进程的数量以释放一些内存。
top
可能会出现一些问题。
对于初始传输,我会考虑使用 tar 来传输内容。然后您可以使用它rsync
来获取任何更改。
正如已经指出的那样,考虑重新安装noatime
或relatime
更新atime
会给磁盘带来很大的负载。
我会考虑使用它sar
来监控系统,看看哪个资源是瓶颈。它可以监控您的所有资源。捕获数据或输出到文件,以便您可以悠闲地检查它。
答案2
获取更快的磁盘。rsync 不会阻塞 apache。io 操作不足会阻塞。