← 回到維運筆記

Snap 自動更新時段調整說明

背景

主機原本的 Snap 自動更新排程是:

timer: 00:00~24:00/4

意思是系統會在一天之內,隨機安排 4 次 Snap refresh,實際執行時間不固定,有可能落在上班時段。

監控曾抓到 xdelta3 與 snapd 在更新期間明顯佔用 CPU(監控做法見《Linux CPU 使用率監控與異常程序追蹤指南》)。為了避免 ERP 使用時段受到背景更新影響,我們把 Snap 的自動更新限制在台灣的凌晨。

原始排程

查詢目前的排程:

snap refresh --time

原本看到:

timer: 00:00~24:00/4
last: today at 01:05 UTC
next: today at 06:32 UTC

這台主機的系統時區是 UTC,台灣時間比 UTC 快 8 小時,所以:

UTC 台灣時間
01:05 09:05
06:32 14:32

這兩個時間都落在白天,代表更新可能在上班時間執行。

調整方式

把 Snap refresh 限制在這個時段:

UTC 台灣時間
18:00 ~ 20:00 02:00 ~ 04:00

執行:

sudo snap set system refresh.timer=18:00-20:00

換算台灣時間前,請先確認主機時區。 上面的對照是以主機時區為 UTC 為前提,可以用 timedatectl 查看。如果你的主機不是 UTC,同一個設定對應的台灣時間會不一樣。

驗證

重新查詢:

snap refresh --time

調整後會看到:

timer: 18:00-20:00
last: today at 01:05 UTC
next: today at 18:00 UTC

代表之後 Snap 的自動 refresh 只會安排在:

UTC 18:00-20:00
台灣 02:00-04:00

查詢最近的更新紀錄

查看 Snap 的變更紀錄:

snap changes | head -20

查看最近 7 天的 snapd 紀錄,並只篩出和更新有關的行:

sudo journalctl -u snapd \
  --since "7 days ago" \
  --no-pager \
  | grep -Ei 'refresh|update|restarting daemon|snapd/'

注意事項

結論

原本 Snap 更新可能隨機落在營業時間,監控也曾看到 snapd、xdelta3 在更新期間造成短暫的 CPU 尖峰。

目前已把自動更新時段改為:

台灣凌晨 02:00~04:00

目的是:

避免系統背景更新在 ERP 主要使用時段佔用 CPU,降低白天使用者遇到短暫卡頓的機率。