Hearbeat monitoring cronů

Od verze 5.7.71 obsahuje TAS mechanismus Heartbeat pro automatické sledování stavu běžících Cron jobů. Heartbeat detekuje zamrzlé nebo crashnuté úlohy a automaticky opraví jejich stav — bez nutnosti manuálního zásahu správce.

Proč Heartbeat vznikl

Před verzí 5.7.71 se mohlo stát, že Cron job crashnul uprostřed běhu, aniž by o tom systém věděl. Stav úlohy zůstal v databázi natrvalo jako Běží — a žádné další spuštění již neproběhlo. Problém se zpravidla zjistil až zpětně, například při ztrátě naplánovaných e-mailů nebo procesů.

Jak Heartbeat funguje

Každý běžící Cron job pravidelně posílá do sdílené mezipaměti (Redis) signál „jsem naživu" — tzv. heartbeat. Samostatná monitorovací komponenta tyto signály sleduje a detekuje úlohy, které přestaly reagovat.

  1. Cron job se spustí → okamžitě odešle první heartbeat signál do Redis.
  2. Každých přibližně 25 sekund odesílá nový signál se svým časovým razítkem.
  3. Monitor kontroluje každých přibližně 40 sekund všechny běžící úlohy a porovnává čas posledního signálu.
  4. Pokud je poslední signál starší než přibližně 95 sekund a úloha stále vykazuje stav Běží, systém detekuje crash.
  5. Systém automaticky označí daný Cron run jako KILLED a resetuje stav Cronu, aby mohl být v příštím plánovaném čase znovu spuštěn.

Porovnání chování před a po zavedení Heartbeatu

Situace

Před verzí 5.7 (bez Heartbeatu)

Od verze 5.7 (s Heartbeatu)

Cron job crashne uprostřed běhu

Stav zůstane Běží natrvalo, další spuštění je zablokované

Systém detekuje crash do ~95 s a automaticky stav opraví

Potřeba manuálního zásahu

Správce musel ručně resetovat stav Cronu

Zpravidla není potřeba — systém se obnoví sám

Viditelnost problému

Žádná zpráva o problému

Zpráva je viditelná v logu.

Odstranění tlačítka „Restart Cronu"

Tlačítko Restart Cronu sloužilo k ručnímu odblokování zamrzlého Cron jobu správcem. Heartbeat tuto potřebu eliminoval — systém nyní zamrzlé úlohy detekuje a obnovuje automaticky. Tlačítko bylo proto odstraněno jako nadbytečné.

Postup při podezření na zaseknutý Cron

  1. Vyčkejte přibližně 2 minuty od chvíle, kdy Cron job vykazuje podezřelý stav.
  2. Zkontrolujte historii běhů daného Cronu — stav by se měl automaticky změnit na KILLED a Cron by měl být připraven k dalšímu spuštění.
  3. Pokud ke změně stavu nedojde ani po 2 minutách, nejde o standardní situaci řešenou Heartbeatu — eskalujte jako samostatný problém.
Pokud dojde k pádu celého cron backendu (procesu), orchestrátor (Kubernetes) ho automaticky restartuje — tato lhůta je nakonfigurována na ~15 minut.

Frantisek Brych Updated by Frantisek Brych

Crons

Contact

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)