Cloudflare'deki çok saat süren arıza, hataların yanlış işlenmesinin bir sonucu olarak ortaya çıkmıştır.

Cloudflare şirkəti öz infrastrukturundakı ən iri hadisələrdən birinin təhlilini yayımladı. Bu hadisə nəticəsində dünənki gün ərzində məzmun çatdırılma şəbəkəsinin böyük bir hissəsi 3 saatdan çox müddət ərzində işləmir halda qaldı. Qəza, ClickHouse anbarında yerləşən DB strukturundakı dəyişiklikdən sonra baş verdi və bu dəyişikliyin nəticəsində botlara qarşı sistem üçün parametrlər faylı ölçüsü iki dəfə artdı. DB-də təkrarlanan cədvəllər yarandı, halbuki faylın yaradılması üçün SQL sorğusu, sadəcə olaraq, bütün cədvəllərdən açar üzrə bütün məlumatları çıxarırdı, təkrarlananları ayırmadan. SELECT name, type FROM system.columns WHERE table = ‘http_requests_features’ order by name;

Cloudflare'deki çok saat süren arıza, hataların yanlış işlenmesinin bir sonucu olarak ortaya çıkmıştır.

Yaradıcısı olan fayl, daxil olan sorğuları emal edən klasterin bütün düyünlərinə yayıldı. Bu fayldan botlardan müraciətlərin yoxlanılması üçün istifadə edilən emalçıda, faylda göstərilən parametrlər əməli yaddaşda saxlanılırdı, həmçinin əməli yaddaşın artıq xərclənməsinin qarşısını almaq üçün kodda faylın maksimum icazə verilmiş ölçüsünə limit təyin edilmişdi. Normal şəraitdə faylın faktiki ölçüsü təyinedici limitdən əhəmiyyətli dərəcədə kiçik idi, lakin cədvəllərin təkrarlandıqdan sonra bu limitdən artıq oldu.

Problemin kökü, limitin aşmağını düzgün emal etməməkdə və köhnə fayl versiyasını istifadə etməyə davam etməyində, monitorinq sistemini təsirsiz vəziyyət barədə məlumatlandırmaq əvəzinə, emalçıda qəza baş verdiyi idi ki, bu da gələcək trafik keçidini bloklayırdı. Xəta, Rust dilində yazılmış kodda unwrap() metodunun Result tipindən istifadəsindən qaynaqlanırdı.

Cloudflare'deki çok saat süren arıza, hataların yanlış işlenmesinin bir sonucu olarak ortaya çıkmıştır.

Result dəyəri «Ok» vəziyyətində olduqda, unwrap() metodu bu vəziyyətə bağlı olan obyekti döndərir, lakin nəticə uğurlu deyilsə, zəng qəza ilə nəticələnir (panic! makrosu çağırılır). Ümumiyyətlə, unwrap() düzəliş işləri və ya test kodu yazılması zamanı istifadə olunur və iş proyektlərində istifadəsi məsləhət görülmür.

Cloudflare'deki çok saat süren arıza, hataların yanlış işlenmesinin bir sonucu olarak ortaya çıkmıştır.
Cloudflare'deki çok saat süren arıza, hataların yanlış işlenmesinin bir sonucu olarak ortaya çıkmıştır.


Mənbə: opennet.ru
DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster