Výkonnostní testy

p95 a průměr: proč jedno číslo pro odezvu nestačí

Report z výkonnostního testu uvádí, že průměrná odezva je půl sekundy. Přesto mohou zákazníci hlásit, že některé operace trvají podstatně déle. Obě informace mohou být správné: samotný průměr totiž neukáže, jak jsou jednotlivé odezvy rozložené.

Vypovídací hodnota průměru závisí na rozdělení hodnot, ze kterých vznikl. Odezvy webu přitom mohou mít dlouhý chvost pomalejších požadavků.

Odezvy se proto měří v percentilech. p95 je hranice, kterou nepřekročí 95 % naměřených odezev; p99 pak představuje obdobnou hranici pro 99 %. Oproti průměru popisují pomalejší chvost rozdělení, ale neukazují jednotlivé nejpomalejší požadavky.

Co průměr skrývá

Představte si sto požadavků. Devadesát pět z nich se vyřídí rychle, protože využijí mezipaměť. Zbývajících pět jde do databáze a čeká několik sekund. Průměr takové stovky může stále vypadat přijatelně, přestože pět naměřených požadavků bylo výrazně pomalejších.

Rychlé případy stahují průměr dolů a pomalé případy v jediném čísle zaniknou. Z reportu potom nemusí být vidět část požadavků s nepřiměřeně dlouhou odezvou.

Konkrétní zákazník nezažije průměr, ale odezvu svých požadavků. Percentily proto pomáhají doplnit pohled na výkon, ale ani z nich nelze bez dalších údajů přímo určit počet nebo chování zákazníků.

Jak měříme my

Odezvy vyhodnocujeme v percentilech i pomocí dalších metrik. p95 znamená hodnotu, pod kterou se v daném měření vejde 95 % naměřených dob odezvy. Pokud je p95 dvě sekundy, alespoň 95 % měřených požadavků se dokončilo nejpozději za dvě sekundy. Neznamená to automaticky, že měl stejnou zkušenost stejný podíl zákazníků, protože jeden člověk může odeslat více požadavků.

Percentily sledujeme společně s chybovostí a propustností. Samotná odezva totiž nestačí: systém může rychle odmítat část požadavků, a přesto vykazovat krátké doby odezvy. Pokud jsou dostupné také systémové metriky, porovnáváme je na společné časové ose.

Takové porovnání pomáhá vytvořit hypotézu, proč se hodnota p99 zhoršila. Časovou souvislost je však nutné potvrdit logy, profilováním, kontrolou konfigurace nebo opakovaným testem po cílené změně.

Percentily mohou na zhoršení upozornit citlivěji a dříve, než se výrazně změní průměr. Proto je sledujeme společně s průměrem, chybovostí a propustností, nikoli jako jediné číslo.

Co z toho máte

Získáte úplnější popis naměřených odezev než při použití jediného průměru. Při hodnocení kapacity systému pomáhají percentily posoudit, jakou hranici nepřekročila zvolená část požadavků při konkrétní zátěži. Samy však neukazují jednotlivé nejpomalejší požadavky ani skupinu zákazníků, kterým patřily.

Zároveň dostanete lepší podklad pro dohodu o limitech odezvy, například v SLA. Průměr může vypadat přijatelně i tehdy, když se hranice pomalejšího chvostu zhorší; p95 nebo p99 mohou na takovou změnu upozornit.

Pokud máme během testu k dispozici také systémové metriky, můžeme zhoršenou odezvu porovnat například s délkou SQL dotazů, čekáním na databázová spojení nebo vytížením serveru a navrhnout pořadí dalšího ověřování.

Další krok

Pokud máte pouze průměrnou odezvu, doplňte report alespoň o p95, p99, chybovost, propustnost a počet vzorků. Výsledky vždy čtěte v kontextu konkrétního scénáře a zátěže. Pokud vás zajímá také chování backendu při zátěži, podívejte se na testování API.

Související témata

Mohlo by vás také zajímat

Kapacitu systému chcete znát předem

Zátěžové a stresové testy ukážou chování a kapacitu systému v dohodnutých podmínkách ještě před očekávanou špičkou.