Backup

重複性常量記憶體使用(重複)

  • September 6, 2017

我在執行 Duplicity 作為 S3 的備份工具的所有伺服器上都遇到了持續的高記憶體使用情況。

Duplicity 不應該執行它的備份任務並在之後終止它的工作,還是我在這裡遺漏了什麼?

duply -v
duply version 2.0.1
(http://duply.net)

Using installed duplicity version 0.7.11, python 2.7.6, gpg 1.4.16 (Home: ~/.gnupg), awk 'GNU Awk 4.0.1', grep 'grep (GNU grep) 2.16', bash '4.3.11(1)-release (x86_64-pc-linux-gnu)'.

我正在使用 Duply 管理每台伺服器上的配置文件,這是其中之一:

GPG_KEY='FOO'
GPG_PW='FOO'

TARGET='s3://s3-eu-central-1.amazonaws.com/foo-bucket/bar-location'

export AWS_ACCESS_KEY_ID='FOO'
export AWS_SECRET_ACCESS_KEY='FOO'

# base directory to backup
SOURCE='/'

# exclude folders containing exclusion file (since duplicity 0.5.14)
# Uncomment the following two lines to enable this setting.
FILENAME='.duplicity-ignore'
DUPL_PARAMS="$DUPL_PARAMS --exclude-if-present '$FILENAME'"

# Time frame for old backups to keep, Used for the "purge" command.
# see duplicity man page, chapter TIME_FORMATS)
MAX_AGE=2M

# Number of full backups to keep. Used for the "purge-full" command.
# See duplicity man page, action "remove-all-but-n-full".
MAX_FULL_BACKUPS=2

# Number of full backups for which incrementals will be kept for.
# Used for the "purge-incr" command.
# See duplicity man page, action "remove-all-inc-of-but-n-full".
MAX_FULLS_WITH_INCRS=1

# activates duplicity --full-if-older-than option (since duplicity v0.4.4.RC3)
# forces a full backup if last full backup reaches a specified age, for the
# format of MAX_FULLBKP_AGE see duplicity man page, chapter TIME_FORMATS
# Uncomment the following two lines to enable this setting.
MAX_FULLBKP_AGE=1M
DUPL_PARAMS="$DUPL_PARAMS --full-if-older-than $MAX_FULLBKP_AGE "

# sets duplicity --volsize option (available since v0.4.3.RC7)
# set the size of backup chunks to VOLSIZE MB instead of the default 25MB.
# VOLSIZE must be number of MB's to set the volume size to.
# Uncomment the following two lines to enable this setting.
VOLSIZE=100
DUPL_PARAMS="$DUPL_PARAMS --volsize $VOLSIZE "

# more duplicity command line options can be added in the following way
# don't forget to leave a separating space char at the end
#DUPL_PARAMS="$DUPL_PARAMS --put_your_options_here "

這是執行備份的 cronjob:

12 3 * * * nice -n19 ionice -c2 -n7 duply database backup_verify_purge --force --name foo_database >> /var/log/duplicity.log 2>&1

26 3 * * * nice -n19 ionice -c2 -n7 duply websites backup_verify_purge --force --name foo_websites >> /var/log/duplicity.log 2>&1

53 4 * * * nice -n19 ionice -c2 -n7 duply system backup_verify_purge --force --name foo_system >> /var/log/duplicity.log 2>&1

這是記憶體使用情況的 24 小時圖表:

在此處輸入圖像描述

看來我的問題是由通過 apt-get 安裝的 Duplicity 版本引起的。

安裝 tarball 版本解決了記憶體問題。

這裡有更多資訊: https ://answers.launchpad.net/duplicity/+question/577611

我正在使用與您幾乎相同的配置,並且看到非常相似的記憶體使用情況。我的 python 和 gpg 的轉速略新,而且我沒有重複使用。重複性為 0.7.11。

我測試過的其中一台機器(el6)將大約 350 萬個文件備份到 s3,並且最大為大約 3G 的 res 記憶體。從此備份中恢復單個文件的最大 RAM 約為 3.9G:

29067 root     /opt/duplicity/bin/python2         0  3893924  3893957  3894704

正在備份大約 750 萬個文件的另一台機器(el5)目前在執行時使用 1.9G res。

想知道與您的文章相關的兩件事:

  1. 這個記憶體使用正常嗎?當備份卷中有大量文件時,認為這可能是正常的。如果沒有,我應該將大約 50G 的 350 萬個文件備份到 s3 或 swift(如果重要的話)。
  2. 將 –volsize 參數更改為小於 200M 會有幫助嗎?我在更新日誌中註意到 .7.11 增加了相當多的預設 volsize。

還有什麼可以減少記憶體使用的嗎?

抱歉,我無法回答您的問題,但我覺得這篇文章很相關,因為我們似乎正在處理類似的問題。我環顧四周,並沒有看到很多關於正常重複記憶體使用的資訊,除了與 ~ 2012 年的錯誤相關的內容。

謝謝!

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