Многосекунден срив на Cloudflare се оказа резултат от неправилна обработка на грешки

Компания Cloudflare публикува анализ на един от най-големите инциденти в инфраструкутрата си, в резултат на който вчера значителна част от мрежата за доставка на съдържание беше неработоспособна в продължение на повече от 3 часа. Извънредното събитие се случи след промяна в структурата на базата данни, съхранявана в ClickHouse, след което файлът с параметрите за системата за защита от ботове се удвои по размер. В базата данни бяха създадени дублиращи се таблици, а SQL запитването за формирането на файла просто извеждаше всичките данни от всички таблици по ключа, без да изключва дубликатите. SELECT name, type FROM system.columns WHERE table = ‘http_requests_features’ order by name;

Многосекунден срив на Cloudflare се оказа резултат от неправилна обработка на грешки

Създаденият файл се разпространи по всички възли на клъстера, обработващ входящите заявки. В обработвача, който използва този файл за проверка на обаждания от ботове, указаните в файла параметри се съхраняваха в оперативната памет и за защита от прекомерната консумация на памет, в кода беше предвиден лимит за максимално допустимия размер на файла. При обикновени условия действителният размер на файла беше значително по-малък от посочения лимит, но след дублирането на таблиците надхвърли лимита.

Проблемата се оказа, че вместо правилна обработка на надвишаването на лимита и продължаване на използването на предишната версия на файла с информиране на мониторинговата система за извънредната ситуация, в обработвача настъпваше аварийно приключване, което блокираше по-нататъшния пробив на трафик. Грешката беше предизвикана от използването в кода на Rust на метода unwrap() с тип Result.

Многосекунден срив на Cloudflare се оказа резултат от неправилна обработка на грешки

Когато стойността на Result има състояние

Многосекунден срив на Cloudflare се оказа резултат от неправилна обработка на грешки
Многосекунден срив на Cloudflare се оказа резултат от неправилна обработка на грешки


Източник: opennet.ru
Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster