Cron se používá pro automatizované periodické spouštění procesů ve stanovený čas. Potřeby Cronu pro webhostingové služby se v mnohém liší svojí specializací na druh vykonávaných operací. Software, který obsluhuje Vaše úlohy nastavené v administraci Cronu, jsme si proto vyvíjeli sami.

První finální verze se na ONEbit.cz nasazovala v červenci 2006. Postupem času procházel drobnými úpravami a optimalizacemi, které si žádala aktuální situace. První významnou změnou byl přesun plánovačů z webserverů a jejich centralizace na jediném serveru (rok 2008). S rostoucím počtem hostovaných účtů však rostou nároky kladené na tento software – musí spolehlivě v požadovaném čase vykonávat ohromné množství úloh, které neustále roste. Pro navýšení kapacit již byly v minulosti prováděny dodatečné úpravy, nicméně rozhodli jsme se pro radikálnější změny… no, v podstatě byl Cron od podlahy kompletně přepsán :). Zdánlivě jednoduchá činnost Cronu si žádá velmi propracované řešení, ve kterém se zúročily naše dlouholeté zkušenosti.

Významné změny

  • Oddělení subsystému obsluhující frontu úloh k vykonání od akční části (umožnilo zejména multithreading).
  • Multithreading – souběžné vykonávání několika úloh. Množství threadů (vláken) vykonávající úlohy ve frontě je dynamický.
  • Jednoduché a robustní jádro správce threadů pouze řídí přidělování úloh ke zpracování. Nezdržuje se tedy čekáním na jejich dokončení – odbavování úloh ve frontě je velmi plynulé a podstatně stabilnější.
  • Razantní snížení zátěže Cronu v nejfrekventovanějších časech (např. v celou hodinu) bylo dosaženo rovnoměrným rozložením úloh v délce zvoleného intervalu.
  • Díky zmíněným úpravám byl dosažen přesnější rozestup jednotlivých spouštění úloh ve zvoleném intervalu.
  • Systém také kontroluje, zda volaná úloha aktuálně běží. V takovém případě ji přeskakuje a odkládá spuštění o další interval. Zcela tak eliminuje vícenásobné souběžné spuštění jedné úlohy (mohlo by nastat u dlouho běžících úloh s krátkým intervalem).
  • Zdokonalení a optimalizace procesů dovolují mimo jiné i vykonávání velmi dlouhých úloh, aniž by „zdržovaly“ vykonání ostatních ve frontě. Z tohoto důvodu jsme na webserverech navýšili maximální dobu, po kterou může Váš PHP skript volaný Cronem, běžet.
  • V případě prázdného výstupu úlohy NEbude zaslána zpráva na nastavený email. Toho využijete především u chybového výstupu – pokud nastane nějaká chyba, obdržíte ji emailem.
  • Na nastavený email obdržíte dokonce i informace o případných potížích s navazováním spojení – chyba autentizace, chyba SSL, chyba spojení s webserverem, apod.
  • Přidána detekce návratového kódu HTTP. V případě výskytu chybového kódu je zaslán detailní záznam o činnosti na Váš email namísto běžné stránky ErrorDocument (typicky 404, atd.). Návratový kód se také zaznamenává do logu pro každé vykonání úlohy.

Spuštění

Nový Cron byl nasazen do ostrého provozu dne 24.5.2010 pro naše klienty ONEserver.cz (dedikované managed servery). Pro klienty webhostingových služeb ONEbit.cz došlo k nasazení nového Cronu 7.7.2010. Opravdu krásnou shodou okolností je, že první verze našeho Cronu byla nasazována na den přesně před 4mi roky :).

Nový Cron