Cloudflares timslånga avbrott var resultatet av felaktig felhantering.

Cloudflare har publicerat en rapport om en av de största incidenterna som påverkat deras infrastruktur, vilket igår lämnade en stor del av deras innehållsleveransnätverk otillgängligt i över tre timmar. Avbrottet inträffade efter en ändring av strukturen i en databas som finns i ClickHouse-lagringen, vilket fördubblade storleken på filen som innehåller parametrar för anti-bot-systemet. Dubbletter av tabeller skapades i databasen, trots att SQL-frågan som användes för att generera filen helt enkelt hämtade all data från alla tabeller efter nyckel, utan att filtrera bort dubbletter. SELECT name, type FROM system.columns WHERE table = 'http_requests_features' order by name;

Cloudflares timslånga avbrott var resultatet av felaktig felhantering.

Den skapade filen distribuerades till alla noder i klustret som bearbetade inkommande förfrågningar. I hanteraren som använde den här filen för att kontrollera botförfrågningar lagrades de parametrar som angavs i filen i RAM-minnet, och för att skydda mot överdriven minnesförbrukning inkluderade koden en gräns för den maximala filstorleken. Under normala förhållanden var den faktiska filstorleken betydligt mindre än gränsen, men efter att ha duplicerat tabeller överskred den gränsen.

Problemet visade sig vara att istället för att korrekt hantera gränsöverskridandet och fortsätta använda den tidigare filversionen, informera övervakningssystemet om nödsituationen, kraschade hanteraren, vilket blockerade vidare trafik. Felet orsakades av användningen av unwrap()-metoden med Result-typen i Rust-koden.

Cloudflares timslånga avbrott var resultatet av felaktig felhantering.

När värdet för Result är "Ok" returnerar metoden unwrap() objektet som är associerat med det tillståndet, men om resultatet inte lyckas resulterar anropet i en onormal avslutning ("panic!"-makrot anropas). Unwrap() används vanligtvis under felsökning eller när man skriver testkod och rekommenderas inte för användning i produktionsprojekt.

Cloudflares timslånga avbrott var resultatet av felaktig felhantering.
Cloudflares timslånga avbrott var resultatet av felaktig felhantering.


Källa: opennet.ru
Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster