Zadania okresowe (Ofelia)¶
Ofelia to cron dla Dockera — harmonogram żyje w labelach kontenerów w plikach Compose
(głównie docker-compose.application.yml), więc nie trzeba nic przepisywać przy
przenosinach serwera.
Konserwacja¶
| Czas | Zadanie |
|---|---|
| 22:00 | denorm rebuild |
| 01:30 | sitemap |
| 02:30 | backup (backup-runner) |
| 03:30 | rebuild_kolejnosc |
| 04:00 | Let's Encrypt renew (job-run certbot) |
| 04:05 | LE reload (job-exec nginx, jeśli sentinel) |
| 04:10 | rotacja nginx access logu |
| 04:30 | rebuild_autor_jednostka |
| sob. 21:30 | PBN sync |
Nocne restarty (mitygacja wycieków pamięci)¶
Długo żyjące procesy Pythona (gunicorn, Celery) puchną niezależnie od limitów — realny memory leak, nie burst. Staggered restart 05:00–05:25 (po backupie 02:30 i rebuildzie 04:30, przed godzinami pracy):
| Czas | Serwis |
|---|---|
| 05:00 | appserver |
| 05:05 | workerserver-general |
| 05:10 | workerserver-denorm |
| 05:15 | flower |
| 05:20 | celerybeat |
| 05:25 | denorm-queue |
Mechanizm¶
ofelia.job-exec.restart_self.command: "kill 1" — Ofelia exec-uje kill 1 przez
docker.sock (ro), PID 1 dostaje SIGTERM, graceful shutdown, restart: always
wskrzesza. Żadnych nowych serwisów, socket zostaje read-only.
Wyłączenie dla serwisu
Zakomentuj labele ofelia.job-exec.restart_self.* w odpowiednim pliku Compose.
Brak przełącznika env-var — restart jest gwarancją, nie opcją.