Co se stane, když GraphQL dotazy neomezíte včas

From Madagascar
Jump to navigation Jump to search

Nakonec se vyhněte tomu, že optimalizujete jen na straně serveru a ignorujete klienta. I sebelepší resolver je k ničemu, když klient posílá zbytečně složité dotazy. Zaveďte jednotný způsob, jakým klienti dotazy skládají, a hlídejte, aby se do produkce nedostaly dotazy, které nesplňují dohodnuté limity. Pravidelná kontrola provozu a úprava limitů podle skutečného chování je to, co z krátkodobého zrychlení udělá dlouhodobě udržitelný stav.

Základem je větrání. Sebelepší ocet se sodu nepřekryjí pach, který vzniká při vaření bez digestoře nebo otevřeného okna. Než začnete čistit, otevřete okno na deset minut a teprve pak aplikujte roztoky. Také nenechávejte ocet v otevřené nádobě přes noc — vsákne se do dřeva, textilu a spíš pach přidá, než odstraní.

Častou chybou je ukládat věci podle toho, kam se vejdou, a ne podle toho, jak často je používáte. Sezónní věci patří do nejhůř dostupných míst, denní potřeby naopak na dosah ruky. Další chyba je kupovat úložné boxy dřív, než změříte prostor. Box, který nepasuje, nakonec skončí na podlaze a zabere víc místa než předtím. Vyhněte se také otevřeným košům na drobnosti v obývacím pokoji, pokud nemáte pevný systém – rychle se z nich stane sbírka nepořádku.

Hloubkové limity místo zákazů Místo plošného vypínání drahých polí zaveďte limity hloubky a složitosti dotazu. GraphQL umožňuje spočítat, jak hluboko se dotaz zanořuje a kolik uzlů může teoreticky vrátit. Pokud dotaz překročí nastavený práh, server ho odmítne ještě před spuštěním resolverů. Tím se vyhnete jak obřím odpovědím, tak útokům, které se snaží server zahltit záměrně složitou strukturou. Prahy nastavte podle reálných potřeb klientů, ne podle dojmu. Příliš přísný limit rozbije legitimní use-cases, příliš mírný nic neřeší.

Jak správně načasovat spánek podle neurofyziolog

Zajímavé je, že stejný princip se nevyplácí všem. Pokud bys chtěl filtrovat v mělkých teplých vodách s řídkým výskytem potravy, bylo by to ztrátové. Plejtvák proto podniká dlouhé migrace mezi oblastmi, kde je krilu dostatek. Bez zubů tedy nejde o ochuzení, ale o přesnou specializaci na konkrétní typ prostředí a kořisti. Když se tato rovnováha naruší, například změnou teploty vody, pozná to celý ekosystém.

Základem je zavést měření. Bez dat o tom, jaké dotazy přicházejí a kolik zdrojů spotřebovávají, se optimalizace mění v hádání. Sledujte hloubku vnoření, počet polí v odpovědi a dobu, kterou tráví jednotlivé resolvery. Užitečné je logovat i to, kolik procent vrácených dat klient skutečně zpracuje. Když zjistíte, že odpověď má tisíce uzlů a klient jich použije pár desítek, máte jasný cíl.

Než cokoli koupíte, vyzkoušejte, jak se k úložnému prostoru dostanete. Klekněte si k posteli a předstírejte, že taháte vak. Pokud musíte nadzvedávat matraci nebo odsouvat celou postel, úložný prostor nevyužijete. Radši zvolte nižší lůžko s otevřeným prostorem a ploché textilní vaky, které vytáhnete jedním tahem. Ušetříte čas i nervy a prádlo zůstane v suchu.

Nejčastější příčina pomalého GraphQL API není databáze, ale to, že klient si řekne o víc dat, než skutečně použije. GraphQL umožňuje přesně specifikovat, která pole mají být vrácena, ale málokdo tuto možnost využívá. Výsledkem jsou dotazy, které tahají stovky zbytečných polí, a resolver, který tráví čas nad daty, jež se v odpovědi zahodí. První krok k optimalizaci není technický, ale organizační: projít reálný provoz a najít dotazy, které vracejí výrazně více, než kolik klient následně zobrazí.

Lůžko s úložným prostorem pod roštem vypadá jako ideální řešení pro malý byt. Jenže mezi roštem a podlahou bývá často jen pár centimetrů. Do takové mezery se vejde jen plochý kufr, ne běžný zavírací box. Než začnete nakupovat úložné systémy, změřte si světlou výšku pod lůžkem. Měřte v rozích i uprostřed, protože rámy nebývají rovné a střed se často prohýbá. Rozdíl dvou centimetrů rozhodne o tom, zda box zasunete, nebo zaseknete.

Typickou chybou je cpát pod postel sezónní oblečení a boty. Boty potřebují větrání, jinak v uzavřeném prostoru zasmrádnou. Svetry a zimní bundy zase lákají moly, kteří se v klidném tmavém prostoru rychle množí. Do úložného prostoru pod lůžkem proto dávejte jen věci, které vydrží stlačení a které nepotřebujete každý týden. Prostěradla, ručníky, náhradní povlečení v ochranném pytli. Cokoli, co používáte denně, bude při vytahování z pod postele otravné a brzy to přestanete uklízet.

Praktické řešení je rozdělit prostor na dvě zóny. Do přední části, kam dosáhnete bez kleknutí, dejte to, co potřebujete častěji. Do zadní části dejte sezónní věci v uzavřených vacích. Mezi zóny položte nízký dřevěný nebo plastový přepážkový pás, aby se věci neposouvaly dozadu. Vaky označte štítkem, ne provázkem, který se utrhne. Pokud je pod lůžkem zásuvka, zkontrolujte její pojezdy. Prach a vlasy je ucpou a zásuvka přestane jezdit. Vysávejte je dvakrát ročně a kolečka občas promažte suchým mazivem.