防止 Rsync 和 SCP 导致 LAMP 服务器页面超时

防止 Rsync 和 SCP 导致 LAMP 服务器页面超时

我正在尝试运行 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/.

因此我尝试使用niceionice降低 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监控。使用nicerenice降低优先级。
  • 磁盘 IO。ionice以空闲优先级使用。
  • 内存。考虑减少 Apache 子进程的数量以释放一些内存。top可能会出现一些问题。

对于初始传输,我会考虑使用 tar 来传输内容。然后您可以使用它rsync来获取任何更改。

正如已经指出的那样,考虑重新安装noatimerelatime更新atime会给磁盘带来很大的负载。

我会考虑使用它sar来监控系统,看看哪个资源是瓶颈。它可以监控您的所有资源。捕获数据或输出到文件,以便您可以悠闲地检查它。

答案2

获取更快的磁盘。rsync 不会阻塞 apache。io 操作不足会阻塞。

相关内容