Det mange timers nedbrud på Cloudflare viste sig at være et resultat af en forkert fejlhåndtering

Cloudflare har offentliggjort en analyse af en af de største hændelser i sin infrastruktur, som resulterede i, at størstedelen af Content Delivery Network var nede i over 3 timer i går. Nedbrudet opstod efter en ændring i strukturen af databasen, der er gemt i ClickHouse, hvorefter filen med parametre til bot-beskyttelsessystemet blev fordoblet i størrelse. Der blev dannet duplikerede tabeller i databasen, mens SQL-forespørgslen til at generere filen simpelthen hentede alle data fra alle tabeller uden at filtrere duplikater. SELECT name, type FROM system.columns WHERE table = 'http_requests_features' order by name;

Det mange timers nedbrud på Cloudflare viste sig at være et resultat af en forkert fejlhåndtering

Den genererede fil blev distribueret til alle noder i klusteret, der behandler indgående anmodninger. I handleren, der bruger denne fil til at kontrollere anmodninger fra bots, blev de angivne parametre gemt i hukommelsen, og der blev indført en grænse for den maksimalt tilladte filstørrelse for at beskytte mod unødigt hukommelsesforbrug. Under normale forhold var den faktiske filstørrelse langt mindre end den angivne grænse, men efter duplikeringen af tabellerne overskred den grænsen.

Problemet var, at i stedet for korrekt at håndtere overskridelsen af grænsen og fortsætte med at bruge den tidligere version af filen og informere overvågningssystemet om den usædvanlige situation, aktiveredes en nødstop i handleren, som blokerede for videre trafik. Fejlen blev forårsaget af brugen af metoden unwrap() med typen Result i Rust-koden.

Det mange timers nedbrud på Cloudflare viste sig at være et resultat af en forkert fejlhåndtering

Når Result har tilstanden 'Ok', returnerer metoden unwrap() det tilknyttede objekt, men hvis resultatet ikke er succesfuldt, fører kaldet til et nødstop (makroen 'panic!' aktiveres). Normalt anvendes unwrap() under fejlsøgning eller ved skrivning af testkode og anbefales ikke til brug i produktionsprojekter.

Det mange timers nedbrud på Cloudflare viste sig at være et resultat af en forkert fejlhåndtering
Det mange timers nedbrud på Cloudflare viste sig at være et resultat af en forkert fejlhåndtering


Kilde: opennet.ru
Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster