Linux

防止 Rsync 和 SCP 在 LAMP 伺服器上導致頁面超時

  • September 16, 2014

我正在嘗試執行 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/.

所以我嘗試使用niceandionice來降低 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 上 - 但這是一項更大的工作,我希望我可以同時移動靜態內容以殺死舊機器

我不希望 Apache 在轉移期間停止服務。我能想到四件事可能會減慢 Apache 的速度。

  • 頻寬飽和。--bwlimit啟動 rsync 時使用。
  • CPU(雖然 rsync 應該不是問題)。用於top監控。使用nicerenice降低優先級。
  • 磁碟 IO。ionice與空閒優先級一起使用。
  • 記憶。考慮減少 Apache 子程序的數量以釋放一些記憶體。top可能會顯示一些問題。

對於初始傳輸,我會考慮使用 tar 傳輸內容。然後,您可以使用rsync來獲取任何更改。

如前所述,考慮重新安裝noatimerelatime更新atime磁碟可能會給磁碟帶來大量負載。

我會考慮使用sar來監視系統以查看哪個資源是瓶頸。它可以監控您的所有資源。擷取數據或輸出到文件,以便您可以輕鬆地檢查它。

引用自:https://serverfault.com/questions/628782