Sentry 服務磁碟佔滿 清除postgresql方法

高大師發表於2019-04-19
Sentry服務執行一段時間後

磁碟會佔滿 86%

Sentry 服務磁碟佔滿 清除postgresql方法

so... 我們ssh 到主機

docker ps複製程式碼

Sentry 服務磁碟佔滿 清除postgresql方法

執行以下命令進入到sentry ,,1f916f730069引數就是左邊的id

docker exec -it 1f916f730069 /bin/bash


複製程式碼

sentry的cleanup工具操作幫助為

root@9acfe6561812:/# sentry cleanup --help
Usage: sentry cleanup [OPTIONS]

  Delete a portion of trailing data based on creation date.

  All data that is older than `--days` will be deleted.  The default for this is 30 days.  In
  the default setting all projects will be truncated but if you have a specific project you want
  to limit this to this can be done with the `--project` flag which accepts a project ID or a
  string with the form `org/project` where both are slugs.

Options:
  --days INTEGER         Numbers of days to truncate on.  [default: 30]
  --project TEXT         Limit truncation to only entries from project.
  --concurrency INTEGER  The number of concurrent workers to run.  [default: 1]
  -q, --silent           Run quietly. No output on success.
  -m, --model TEXT
  --help                 Show this message and exit.
複製程式碼

執行以下命令開始刪除

sentry cleanup --days 7複製程式碼

要刪好久。。。


再執行df -h 發現還是很滿。這是因為cleanup的使用delete命令刪除postgresql資料,但postgrdsql對於delete, update等操作,只是將對應行標誌為DEAD,並沒有真正釋放磁碟空間。


然後exit 退出當前docker

再執行以下命令進入 資料庫的docker

docker exec -it 176e1501e871 /bin/bash複製程式碼

進來後執行命令

vacuumdb -U postgres -d postgres -v -f --analyze
複製程式碼

刪完後。。

Sentry 服務磁碟佔滿 清除postgresql方法

成功搞定!

最後 人工改自動!

我們使用 crontab 在linux實現定時任務

crontab -e複製程式碼

在裡面輸入:

0 0 * * *  docker exec -it onpremise_web_1 sentry cleanup --days 7  && docker exec -it onpremise_postgres_1 vacuumdb -U postgres -d postgres -v -f --analyze複製程式碼

這句話的意思是每天清理,超過7天的。

儲存!


相關文章