Pravděpodobně ale váš náklad ztroskotá, a vy se budete snažit zachránit co se dá. Aby k tomu nedošlo, doporučujeme se dopředu připravit na očekávané výkyvy v zatížení infrastruktury. Takovými e-commerce špičkami jsou typicky Vánoce a Black Friday.
E-shopaři se na Vánoce již tradičně připravují v létě. Právě tehdy je čas přemýšlet nejen o marketingových akcích, které přilákají co nejvíce zákazníků, ale i o technickém zázemí, které zvládne ustát jejich příliv na web. Základem je vědět, jaká je průměrná návštěvnost vašeho webu. A jaká byla minulou sezónu. Jakmile máte toto srovnání, můžete jednoduchou trojčlenkou zhruba vypočítat, jak velký nárůst můžete očekávat letos.
Co když se vám ale bude dařit ještě lépe jak loni? To by bylo skvělé, ale buďte i na tuto velmi žádoucí variantu připraveni. Doporučujeme počítat s cca 20% rezervou výkonu. Vždy je ale nejlepší poradit se o rezervě kapacity na míru přímo s vaším poskytovatelem hostingových služeb.
Jak spočítat potřebnou kapacitu
Pro jednoduchý výpočet kapacity infrastruktury stačí očekávaná čísla porovnat s aktuálními daty. Vyjde se z předpokladu, že aplikace bude škálovat lineárně. A trojčlenkou dojdete k tomu, jaké systémové zdroje potřebujete.
Výhodou této metody je její rychlost a minimální náklady. Je však hodně orientační. Přesnější alternativou je tzv. performance test. V jeho průběhu se snažíme umělou zátěží dosáhnout na potřebná čísla, přičemž sledujeme, jaké komponenty se stávají bottleneckem. Touto metodou se odhalí i konfigurační nebo technologické limitace. Nicméně, fér je zmínit, že performance testy jsou časově náročné. A i specifické dle použitých technologií. Pro menší a střední e-shopy jsou z tohoto důvodu zbytečně nákladné.
Pro zajímavost: například populární databáze Redis je single threadová, takže když saturuje výkon jednoho jádra, v tu chvíli dosáhla svého maxima a je jedno, že server má desítky volných jader k dispozici. Prostě proto, že tato aplikace je využít neumí.
Technické okénko: 4 věci, kterým věnovat pozornost
CPU – dejte si pozor na zavádějící grafy vytížení procesoru, pokud má zapnutý hyperthreading. Graf agregující výkon přes všechna procesorová jádra pak velmi zkresluje dostupný výkon. Hyperthread sice teoreticky zdvojnásobuje počet jader, ale prakticky nepřidá dvojnásobek výkonu. Pokud na takovém grafu vidíte hodnoty nad 50 %, jste velmi blízko maxima… To se typicky nachází někde mezi 60 a 70 %, dle typu zátěže.
RAM – operační paměť obvykle neroste lineárně. Například u databází jsou některé paměťové alokace globální a jiné jsou pro každé spojení. Často se zapomíná na to, že operační paměť nemůže být zcela zaplněna. Stačí pak potřeba malé alokace a jádro systému zabije proces, který si paměť vyžádala.
Operační systém rezervu v paměti typicky využívá jako diskovou cache, což má pozitivní vliv na výkon. Pokud není možné dostatečně cachovat, je potřeba diskových operací vyšší.
Disky – nízká rychlost disků je častým důvodem toho, že jsou některé operace pomalé, nebo při vysoké zátěži zcela nefunkční. Zda je řešení dostatečné se ukáže až při vysoké zátěži, nebo u performance testu. Snížit tuto zátěž je možné intenzivnějším cachováním, což vyžaduje více operační paměti. Dále je možné řešit situaci například upgradem ze SATA/SAS SSD na NVMe.
Nutné je vnímat i kapacitu, protože i ta může mít na výkon vliv. Všechny filesystémy využívající COW (copy-on-write) – tedy například námi používané ZFS, nebo filesystémy jako btrfs, případně WAFL – potřebují pro svůj běh volnou kapacitu. Všechny tyto filesystémy spojuje nepříjemná vlastnost, kdy přibližně od 90 % zabrané kapacity začne rychle degradovat výkon. Je důležité toto nepodceňovat – v době velké zátěže se často vytváří i více dat a kapacita se rychleji spotřebovává.
Síťová vrstva – obzvlášť důležité pro clusterová řešení, kde servery hodně komunikují mezi sebou a snadno se stane, že rychlost pro interní komunikaci není dostatečná. Zde je vhodné vnímat i redundanci – standardem u vshostingu je zdvojení síťové vrsty pomoci technologie LACP. Tedy např. z 2x 1GE uděláme jedno 2GE rozhraní. Vzniká nám tím sice kapacita 2GE, ale prakticky není vhodné zaplnit více jak 1GE, protože v tu chvíli přicházíme na serveru o redundanci.
Ani to, že řešení využívá 10GE rozhraní neznamená, že takové řešení bude dostačovat vždy a za každých okolností. Stačí drobná chyba vývojáře, kdy jednoduchá query do databáze přenese velké množství nepotřebných dat (typicky select * from… a pak si v aplikaci vezme prvních X řádek) a je snadné i takto velkou šířku pásma vyčerpat.
Můžeme vám poradit s kapacitou infrastruktury? Obraťte se na nás na e-mailu konzultace@vshosting.cz.