HTTP 429 v monitoringu: keď kontrolu zastaví limit požiadaviek

Monitor dostáva Too Many Requests, návštevník web otvorí. Ako nájsť odmietajúce pravidlo, preveriť spoločný limit a overiť skutočný dopad.

Detail červeného signálu pre chodcov na tmavom semafore v meste
Fotografia: Lars Van Poucke / Unsplash

Monitoring hlási chybu, no pri otvorení webu v prehliadači sa problém neprejaví. V odpovedi kontroly je HTTP 429 Too Many Requests: požiadavka narazila na obmedzenie frekvencie. Zistite, pre koho a kde limit platí, a samostatne preverte dopad na používateľov. Nasledujúci postup sa venuje HTTP kontrolám; príklady konfigurácie používajú NGINX a Cloudflare, diagnostický curl predpokladá Linux.

Najprv určte vrstvu, ktorá požiadavku odmietla

Uložte presnú URL, metódu, čas, meracie miesto a odpoveď kontroly. Pre jednu čítaciu URL môžete použiť curl -sS -D - -o /dev/null https://example.com/health. Doména aj cesta sú príklad; nahraďte ich vlastnými. Príkaz zobrazí hlavičky a zahodí telo. Zaznamenajte status a prípadný Retry-After. Súvis s konkrétnym pravidlom potvrďte v dostupných logoch.

Prejdite CDN, reverznú proxy aj aplikáciu. Pri Cloudflare overte zodpovedajúce rate limiting pravidlo, jeho výraz, charakteristiky počítania a obdobie. Pri NGINX preskúmajte limit_req a limit_req_status; predvolený odmietací status tohto modulu je 503. Samotné číslo 429 preto neurčuje konkrétny modul. Priraďte mu dôkaz o odmietnutí v správnej vrstve skôr, než upravíte nastavenie monitoru.

Zistite, ktoré kontroly čerpajú spoločný limit

Skontrolujte kľúč, podľa ktorého pravidlo požiadavky združuje. NGINX môže používať napríklad $binary_remote_addr, teda adresu klienta. Viac monitorov so spoločnou výstupnou IP tak môže čerpať rovnaký limit. Spočítajte ich frekvenciu, súbežné behy aj ďalšie pokusy v rámci príslušného kľúča. Posúdenie iba jedného monitoru môže časť prevádzky vynechať.

Za proxy overte, ktorú adresu server skutočne používa. V NGINX súvisí obnova klientskej adresy s set_real_ip_from a real_ip_header: náhradnú adresu treba prijímať od dôveryhodnej proxy. Samotný X-Forwarded-For bez overenia dôvery nevysvetľuje skutočnú identitu klienta. Výsledok porovnajte s logmi a konfiguráciou. Rovnakú kontrolu urobte pri limite viazanom na testovací účet alebo API kľúč.

Rešpektujte čakanie a upravte rozvrh kontrol

Odpoveď 429 môže obsahovať Retry-After, jeho prítomnosť však nie je povinná. Hodnota môže byť HTTP dátum alebo počet sekúnd čakania od prijatia odpovede. Preverte, ako ju monitor interpretuje a či jeho ďalší pokus skutočne počká. Chýbajúca hlavička sama neurčuje vhodný interval. Ten odvoďte od pravidla a potrebnej rýchlosti detekcie.

Rozložte kontroly, ktoré štartujú naraz, a obmedzte nepotrebné opakované pokusy. Zohľadnite aj dobu uplatňovania blokovania; pri Cloudflare ide o samostatný parameter pravidla. Jednorazový úspech po pauze ešte nepreverí celý bežný rozvrh. Zmenu najprv overte s malým počtom kontrol a potom pri očakávanom súbehu. Ochranu služby zachovajte; meranie nastavte podľa jej účelu a kapacity.

Potvrďte výsledok aj pre bežného klienta

Po zmene porovnajte výsledky monitoru s odmietnutými požiadavkami a odozvou aplikácie. Použite aj nezávislú primeranú kontrolu cez bežnú cestu návštevníka. Overte, že monitor stále sleduje dôležitú funkciu, nielen jednoduchšiu URL, ktorá obmedzeniu unikne. Ak pripravujete osobitnú čítaciu kontrolu, určte, čo preverí a aký typ zlyhania už nepokryje.

Ak 429 dostávajú aj legitímni používatelia, riešte ich prístup ako skutočný prevádzkový problém. Ak je obmedzený iba merací tok, zaznamenajte túto príčinu a opravte jeho nastavenie. V oboch prípadoch uložte pravidlo, dotknutý kľúč a výsledok overenia. Ďalší incident sa potom nebude začínať rovnakou otázkou, či je nedostupná služba alebo jej kontrola.

  • Priraďte odpoveď ku konkrétnej vrstve a pravidlu.
  • Spočítajte kontroly aj pokusy zdieľajúce rovnaký limit.
  • Overte Retry-After, rozvrh a dobu blokovania.
  • Potvrďte dostupnosť monitorovanej funkcie aj pre návštevníka.

Čo si odniesť

HTTP 429 vysvetľujte v kontexte konkrétneho pravidla a klienta. Nájdite spoločný počítací kľúč, upravte meranie podľa limitu a overte výsledok cez používateľskú cestu. Tak odlíšite problém kontroly od obmedzenia, ktoré skutočne zasahuje službu.

Dokumentácia a ďalšie čítanie

Mgr. Martin Hlavaj, MBA

Softvérový inžinier

Všetky články

O výpadku sa dozviete včas.

Pridajte svoj web alebo API do UpBota a nastavte, komu príde upozornenie.

Začať monitorovať zadarmo