← Speed / speed / optimization / protocol / troubleshooting
Řešení problémů s protokolem
Tento návod popisuje běžné problémy s HTTP/2 a HTTP/3, včetně nekompatibility origin serveru, chyb multiplexování a chyb prohlížeče, a uvádí postup jejich diagnostiky a řešení.
H2 to Origin - Nekompatibilita originu
- Originu
max_concurrent_streamsse sjednává během handshake. - Pokud
GOAWAY(0)je pravděpodobnou příčinou restart serveru nebo jiný důvod, kvůli kterému server odmítá nové streamy. - Další informace najdete v tématu RFC 9113 - SETTINGS_MAX_CONCURRENT_STREAMS ↗.
H2 Multiplexing - Nekompatibilita/problémy s originem
- Problémy s multiplexováním mohou vznikat kvůli nesprávné konfiguraci serveru.
- Použijte netlogs ↗ abyste identifikovali
SETTINGS_MAX_CONCURRENT_STREAMSporušení nebo neočekávanéGOAWAYsnímků. - Další informace najdete v tématu Problémy se souběžností streamů ↗.
Obecné chyby prohlížeče
Mezi časté chyby prohlížeče patří:
ERR_HTTP2_PROTOCOL_ERRORERR_HTTP3_PROTOCOL_ERRORERR_QUIC_PROTOCOL_ERROR
Tyto chyby nemusí nutně znamenat problém na úrovni protokolu. Postupujte podle následujících kroků:
- Zkuste problém reprodukovat pomocí HTTP/1.1.
- Pokud problém přetrvává i v HTTP/1.1, vyřešte nejprve základní chybu a až poté testujte HTTP/2 nebo HTTP/3.
- Pokud problém nepřetrvává, analyzujte netlogy kvůli problémům specifickým pro HTTP/2 nebo HTTP/3.
Další informace najdete v tématu Hlavička požadavku URL v Chromiu ↗.
Chrome se zasekává nebo selhává pouze u HTTP/3
Pokud se problém projevuje pouze v Chromu přes HTTP/3 a po vypnutí HTTP/3 zmizí, může souviset spíše se zpracováním QUIC na straně prohlížeče než s vaším origin serverem. Jde o known problém prohlížeče Chrome (crbug.com/41161335 ↗) pak příčinou není implementace QUIC od Cloudflare.
Mezi příznaky mohou patřit:
- Velká stahování se nečekaně zasekávají.
- Stránky s velkým počtem souběžných požadavků se na jednu až tři minuty zaseknou a poté selžou.
- Chrome hlásí
ERR_QUIC_PROTOCOL_ERRORneboERR_HTTP3_PROTOCOL_ERRORpoté, co spojení přestane postupovat. - Problém se v prohlížečích Firefox ani Safari neprojevuje.
- Problém zmizí po vypnutí QUIC v
chrome://flags.
Jak problém izolovat
- Dočasně vypněte HTTP/3 pro danou zónu.
- Otestujte stejný požadavek znovu přes HTTP/2.
- Pokud problém přes HTTP/2 zmizí, zachyťte NetLog pro Chrome a porovnejte chování.
Otestujte ihned: V prohlížeči Chrome přejděte na chrome://flags, vyhledejte "QUIC" a nastavte ho na Disabled, poté restartujte Chrome.
Řešení
Pokud je problém omezen na konkrétní hostname, můžete použít cílenější řešení: vytvořte Response Header Modification Transform Rule, které odstraní Alt-Svc pro dotčený název hostitele.
- V Cloudflare dashboardu přejděte do sekce Rules Přehled stránce.
- Vyberte Vytvořit pravidlo > Response Header Transform Rule.
- Nastavte odpovídající výraz na svůj hostname:
(http.host eq "example.com"). - V části Úprava hlavičky odpovědi, vyberte Odebrat a zadejte
Alt-Svcjako název hlavičky.
Tím se pro daný hostname vynutí použití HTTP/2 v Chromu, aniž by se HTTP/3 vypnulo globálně. Proxovaná doména (hostname) však může HTTP/3 inzerovat i prostřednictvím generovaných záznamů HTTPS, takže nejspolehlivějším způsobem, jak si při řešení potíží vynutit HTTP/2, je vypnout HTTP/3 pro celou zónu.
Po změně Alt-Svc, nezapomeňte, že prohlížeče mohou nabízenou alternativní službu uložit do cache až na 24 hodin.