Linux
防止 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/.
所以我嘗試使用
nice
andionice
來降低 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
監控。使用nice
或renice
降低優先級。- 磁碟 IO。
ionice
與空閒優先級一起使用。- 記憶。考慮減少 Apache 子程序的數量以釋放一些記憶體。
top
可能會顯示一些問題。對於初始傳輸,我會考慮使用 tar 傳輸內容。然後,您可以使用
rsync
來獲取任何更改。如前所述,考慮重新安裝
noatime
或relatime
更新atime
磁碟可能會給磁碟帶來大量負載。我會考慮使用
sar
來監視系統以查看哪個資源是瓶頸。它可以監控您的所有資源。擷取數據或輸出到文件,以便您可以輕鬆地檢查它。