Měl jsem takový nápad na jednu velmi jednoduchou aplikaci pro Google App Engine. Nebudu vysvětlovat, o co přesně šlo, stačí když řeknu, že šlo o aplikaci, u které se neočekává žádná velká návštěvnost.
Na desktopu mi první prototyp chodil dobře. I po tom, co jsem udělal deploy na App Engine, se zdálo být vše v pořádku. Po nějakém čase jsem ale zpozoroval, že ostrá verze má velkou prodlevu v načítání. Třeba 2-3 vteřiny. Po načtení stránky se to vždy jako by „prošťouchlo“ a aplikace chvíli chodila svižně. Ale za chvíli měla zase tu prodlevu.
Jak jsem zjistil, není to, bohužel, chyba, ale vlastnost. Google App Engine po nějaké době nečinnosti prostě aplikaci vypne a znovu ji zapne až s dalším přicházejícím požadavkem. Pokud máte aplikaci s návštěvností řekněme do 100 návštěv/den, tak v podstatě každý takový návštěvník, bude čekat.
Co s tím?
Pokud chcete vše zadarmo, tak, pro aplikace s nízkou návštěvností, Google App Engine nedoporučuji. Je tu ještě jedna možnost, která je dost přitažená za vlasy, ale přesto jí zmíním: V určitých intervalech, třeba cronem, posílat z jiného serveru požadavek na daný web a udržovat ho tak v bdělosti.
Nebo můžete použít Testomato, které vám v určitých intervalech každým testem aplikaci probudí, pokud by hybernovala.
U placené verze Google App Engine máte systémové řešení. Můžete jí nastavit Min Idle Instances
(1..100), čímž říkáte, kolik nečinných instancí aplikace minimálně poběží. To nahrazuje dříve používanou funkci Always On
, která zase zajišťovala, že vaše aplikace nikdy neusne.