Ubuntu

rsync後如何釋放記憶體?

  • March 8, 2016

我需要從具有 10GB RAM (Ubuntu) 的 Web 伺服器備份數據。為了備份數據,我使用 Rsync。

我的第一個測試是為所有網站使用一個 rsync,但它使用 5GB。所以我決定拆分 rsync 但它仍然使用 5GB。在這兩種情況下,它都會消耗大量記憶體,並且在處理後並不總是完全空閒

如果我在 rsync 之間手動刪除記憶體,它只使用 150Mb 和 500Mb 之間的記憶體,在處理後完全釋放記憶體。(並釋放伺服器50%-70%的記憶體)

for CURDIR in "$ROOTDIR"*
do
   echo "Start $CURDIR"    
   rsync -aHh --stats --compress --delete "$CURDIR" --link-dest="saveofyesterday" "saveoftoday"    
   echo "Clear"
   sync
   echo 3 > /proc/sys/vm/drop_caches
   echo "Finish $CURDIR."
done

好像不推薦。實現這一目標的正確方法是什麼?

我建議查看rsync 的fadvise更新檔。目的是在備份時保留磁碟記憶體。效果您應該看到您認為“已使用”的記憶體不會被“使用”。實際上,您認為已使用的記憶體已被使用,但它用於磁碟記憶體,並且會在程序需要時釋放。如果系統記憶體不足,最終所有磁碟記憶體將從記憶體中清除,以嘗試為需要的應用程序提供記憶體。這很糟糕,特別是在沒有非常快的磁碟子系統的繁忙系統上,因為一旦磁碟記憶體被從記憶體中逐出,所有曾經記憶體的數據都需要再次從磁碟讀取,這將導致巨大的 IO 負載和等待時間。

手動刪除記憶體同樣糟糕,會使您的伺服器陷入困境。這不是可取的路線。記憶體管理不是您的腳本應該擔心的事情,核心會處理這部分。

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