Audit scheduled job times for overlap #119
Labels
No labels
audit-work
bug
docs
general-admin
major-upgrade
needs-vps-sync
new-service
on-hold
outside-work
post-podman
renovate
upstream
vps
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mysticalsoap/docker#119
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bazarr recently moved to weekly Sunday batches, and a scheduled docker restart would want a low-traffic window too. Worth checking whether the full set of scheduled/batch jobs collides -- or confirming it doesn't matter.
Audit, 2026-10-08
Every scheduler in play, with measured durations (Dagu run history, systemd journal, node-exporter textfiles, Jellyfin/*arr task APIs). Times are host local (America/New_York) unless flagged.
Fixed-clock jobs
metadatadocker-image-pruneqbit-manageinvidious-restartcrowdsec-hub-update→ restarts crowdsecip2location→ restarts traefikshadow,logrotate(00:02),snapper-timeline(hourly on the hour)plocate-updatedb; Mon 00:39fstrim, Mon 00:54btrfs-balance-externalaudiobookshelf-matchdownload-sync-reset; 01:30 every 7 dprocess-blocklisted-tagsjellyfin-full-scanradarr-scan/sonarr-scanavailability-sync,image-cache-cleanupimage-scanInterval-only (no fixed clock, nothing to collide with)
Radarr/Sonarr/Lidarr/Prowlarr tasks (RSS 15–30 min, refresh 12–24 h, weekly backup) all count from app start, longest 15 s. Bazarr wanted-search 6 h, upgrade 12 h, same. SMART metrics hourly, goroutine watch 5 min, Vaultwarden purges (UTC, seconds), Forgejo cron at defaults (midnight local, no overrides), Audiobookshelf backups off, qBittorrent scheduler off, Navidrome has no scheduled scan.
Not checked: the VPS (ssh key isn't in the agent).
ssh vps systemctl list-timers --allcloses that.Verdict
Nothing collides in a way that costs anything. Every job is seconds except
metadata(minutes) and nothing waits on anything else. Three things worth doing anyway:environment:block (NVIDIA vars) replacesx-common's, soTZnever reaches it: the exact pitfall the navidrome block comments on. Result: the "overnight" daily tasks (trickplay generation, chapter extraction, StarTrack export, both watchlist syncs) fire 20:00–23:30 local, during viewing hours. Fix: re-listTZ(andPUID/PGID) under jellyfin'senvironment:; the daily triggers then land 00:00–03:30 local. Costs one Jellyfin recreate.ip2locationto10 0 1 * *andcrowdsec-hub-updateto20 0 1 * *so the public-facing restart never coincides with anything else.audiobookshelf-match.yaml's comment claims 00:30 keeps clear ofmetadata. It did not on 12 nights in September (metadata ran to 00:43). Harmless, the two talk to different apps, but the comment should say "shares the container, not the apps" rather than promise separation.Also: Jellyfin's interval tasks re-anchor to whenever Jellyfin last restarted. A daytime
just deployafter a Renovate merge moves the library scan, audio normalization and subtitle downloads to that hour of the day until the next restart. Switching those to a daily trigger in Jellyfin's UI makes them predictable; a settings choice, not a repo one.Scheduled docker restart (#117, on hold): when it lands, 03:30–03:55 is the clean window, any day. Backup finishes by 03:16, Jellyfin's cluster is done by 01:00, Seerr's scans are seconds, Bazarr's Sunday sync is 04:00. Sunday 05:30 (restic check) is the only other weekly event to stay clear of.
VPS checked by the user: only stock Debian timers (apt-daily 16:45 UTC, apt-daily-upgrade 06:14 UTC, logrotate, man-db, dpkg-db-backup at 00:00 UTC, weekly fstrim and e2scrub). Nothing from the stack, no reboot timer. Follow-ups are in the PR linked below.