Nadměrné načítání v GraphQL, které zabíjí váš server

From BloomWiki
Revision as of 16:32, 19 October 2026 by 104.23.221.134 (talk) (Created page with "Menopauza přináší návaly horka, noční pocení, nespavost, podrážděnost a výkyvy nálad. Byliny dokážou tyto projevy zmírnit, ale nefungují jako zázrak přes noc. Jejich účinek se dostavuje po několika týdnech pravidelného užívání. Než začnete, poraďte se s lékařem, zvláště pokud berete léky na štítnou žlázu, antidepresiva nebo hormony. Některé byliny totiž mohou interagovat s léčivy a měnit jejich účinek.<br><br>Typická chyb...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Menopauza přináší návaly horka, noční pocení, nespavost, podrážděnost a výkyvy nálad. Byliny dokážou tyto projevy zmírnit, ale nefungují jako zázrak přes noc. Jejich účinek se dostavuje po několika týdnech pravidelného užívání. Než začnete, poraďte se s lékařem, zvláště pokud berete léky na štítnou žlázu, antidepresiva nebo hormony. Některé byliny totiž mohou interagovat s léčivy a měnit jejich účinek.

Typická chyba je porovnávat jen u dvou obchodů a považovat to za dostatečné. Trh je širší. Dále lidé zapomínají na slevové kódy a věrnostní programy, které cenu sníží až po přihlášení. Některé obchody zobrazují jiné ceny přihlášeným uživatelům. Zkus se přihlásit, případně použít anonymní okno pro kontrolu. Také se vyplatí sledovat vývoj ceny v čase – ceny kolísají a nákup ve špatný den může znamenat rozdíl.

Pro malý obývací pokoj se hodí roh s délkou delšího ramene do zhruba dvou metrů a kratšího do půldruhého metru. Pokud je místnost úzká a protáhlá, volte roh s krátkým ramenem, které se vejde podél kratší stěny. Naopak v místnosti, kde se sejde více lidí, se vyplatí roh s rozkladem a úložným prostorem – ten nahradí komodu i přistýlku. Pozor ale na výšku opěradla: vysoké opěradlo opticky zmenšuje prostor, nízké s odnímatelnými polštáři působí vzdušněji.

Většina týmů, které v roce 2026 nasadí GraphQL, řeší po měsíci provozu stejný problém: jeden dotaz z mobilní aplikace dokáže stáhnout data za celý týden a databáze padá na CPU. Přitom stačí pochopit, že GraphQL sám o sobě neoptimalizuje nic. Naopak přesouvá odpovědnost za efektivitu z backendu na klienta. Kdo to nepochopí, skončí s resolvery, které volají databázi pro každé pole zvlášť, a s latencí, která roste kvadraticky s hloubkou dotazu.

První konkrétní krok je analýza dotazů v produkci. Nestačí se dívat na průměrnou dobu odezvy, protože ta zamlčuje outlier hodnoty. Sbírejte histogram latencí podle tvaru dotazu, ne podle endpointu. V praxi to znamená logovat hash dotazu spolu s časem a počtem volání databáze. Teprve pak uvidíte, že 2 % dotazů tvoří 80 % zátěže. Typická chyba je optimalizovat podle průměru a divit se, že se nic nezměnilo.

Základem je porovnávat konkrétní produkt, ne kategorii. Vyhledávej přesný název včetně varianty a kódu výrobce. Když zadáš jen obecné slovo, dostaneš stovky nesouvisejících výsledků a srovnání ztratí smysl. Zkopíruj název z oficiální stránky výrobce nebo z krabice. Potom teprve hledej, kdo ho prodává. U zboží, které se prodává ve více variantách, si dej pozor na záměnu – jiná barva, jiná velikost nebo jiný rok výroby znamená jinou cenu a srovnání je falešné.

Plejtvák obrovský nemá zuby, a přesto patří k největším živočichům planety. Nepotřebuje je, protože nechytá jednotlivé ryby. Vrhne se do hejna drobného krilu, otevře tlamu a vodu protlačí přes rohovinové ploténky, kterým se říká kostice. Kořist zůstane na jemných vláknech a voda odteče ven. Žádné kousání, žádné žvýkání — jen mechanika filtru.

Čela a bočnice připevněte až ve chvíli, kdy základna stojí rovně a neviklá se. Postavte rám na bok, přiložte čelo a zkontrolujte spáru po celé délce. Mezera, která se na jedné straně ztrácí a na druhé rozšiřuje, znamená křivý rám, ne křivé čelo. Nevyřešíte to silnějším dotažením, ale povolením a srovnáním základny. Lamely vkládejte do držáků až nakonec; při manipulaci s rámem vypadávají a ohýbají se.

Dále se vyplatí omezit, co může klient žádat. Persistované dotazy nebo allowlist schválených operací odstraní většinu ad-hoc dotazů, které nikdo nepotřebuje. V kombinaci s krátkou cache na úrovni jednotlivých polí snížíte zátěž i bez změny resolverů. Pozor ale na cacheovaná pole, která závisí na uživateli – pokud je klíč cache pouze název pole, dostane jeden uživatel data druhého. To je bezpečnostní chyba, ne jen výkonnostní.

Nakonec měřte po každé změně. Zavedení limitu, dávkování nebo cache bez měření znamená, že nevíte, co zabralo a co jen přesunulo problém jinam. Sledujte počet databázových dotazů na jeden GraphQL dotaz, p95 a p99 latence a podíl odmítnutých dotazů. Pokud odmítnutých dotazů prudce přibývá, prahy jsou příliš přísné a klienti to obcházejí jinudy. Optimalizace není jednorázový úkol, ale smyčka, která se opakuje s každou změnou schématu.

Kostice nejsou zuby. Jsou to destičky z keratinu, stejného materiálu jako lidské nehty, které visí z horní čelisti. Na vnitřní straně se třepí na vlákna. Čím jemnější vlákna, tím menší kořist velryba udrží. Proto se jednotlivé druhy liší: někteří filtrují kril o velikosti rýžového zrna, jiní i menší plankton. Šířka štěrbiny rozhoduje o tom, co se dostane do žaludku a co propadne.