OpenFreeMap, Saniyede 100 Bin İsteği Dayanma Deneyimini Paylaştı
(blog.hyperknot.com)- OpenFreeMap, saniyede 100 bin isteği ve günde 300 milyon trafiği başarıyla işledi
- Wplace.live'in ani popülaritesi ve otomatik toplu istekler trafik patlamasının nedeni oldu
- Cloudflare'in CDN önbellek oranı %99,4 ile sunucu, kalan 1.000 rps yükünü de rahatça taşıdı
- Bunun sonucu olarak yalnızca kayan tile eksikliği gibi küçük kesintiler yaşandı; hizmetin çoğu normal şekilde çalışmaya devam etti
- İleride referer tabanlı bant genişliği sınırlaması gibi otomatik trafik yönetimi iyileştirmeleri planlanıyor
OpenFreeMap'in Son 10 Aydaki Büyük Trafik Yanıtı
OpenFreeMap son 10 aydır son derece stabil bir operasyon deneyimi yaşadı. Cloudflare bant genişliği desteği, Hetzner sunucularının stabilitesi, Btrfs üzerindeki tile servisi ve nginx verimliliği sayesinde sistem güvenilirliği kanıtlandı. Ancak bir gün bazı tile’ların yüklenmediği yönünde raporlar alınmaya başlandı. Normalde bu, algoritma hatasından kaynaklanır; bu sefer ise nginx loglarında open() "Too many open files" hatası görüldü.
Trafik izleme araçlarıyla yapılan kontrolde, 24 saat içinde 3 milyar istek oluştuğu ve yalnızca küçük tile dosyalarıyla bile 215 TB trafik üretildiği görüldü. Son 5 dakikada ise 30 milyon istek ile, yani saniyede 100 bin isteke ulaşan bir sıçrama yaşandı. Bu trafik, ticari harita servislerinde aylık 6 milyon dolardan fazla maliyet anlamına gelirdi.
Cloudflare panosunda isteklerin %96'sı 200 OK olarak yanıtlandı; yalnızca %3,6'sı anormaldi (206 Partial Content). Çoğu istek sorunsuz servis edildi ve yalnızca bazı eksik tile’lar dışında tüm sistem normal çalıştı.
Trafik Patlamasının Nedeni: Wplace.live
Bu trafiğin kaynağı, yeni bir işbirlikçi çizim sitesi olan Wplace.live idi. Açılışın ardından çok sayıda kullanıcı akın etti ve OpenFreeMap tabanlı haritayı kullanmaları tasarlanmıştı. Kullanıcılar, 1 piksel/30 saniye sınırlamasını atlatmak için otomatik araçlar (örn. Puppeteer/Chromium, IP rotasyonu vb.) ile yüksek hacimli istekler üretmişti.
Yönetici, geçmişte Neal.fun ile iş birliği deneyiminden yola çıkarak, trafik patlamasından önce iletişim kurmanın önemini vurguladı. Bu sefer hizmetin aksamasına neden olduğu için ilk kez Cloudflare kuralları uygulanarak engelleme yapıldı. Bundan sonraki dönemde referer ya da custom header tabanlı otomatik trafik kontrolü yöntemleri (Cloudflare API kullanımı dahil) üzerinde çalışılacak.
Cloudflare Desteği ve OpenFreeMap Mimarisinin Başarısı
Cloudflare, bant genişliği desteğini çok hızlı bir şekilde (hafta sonu dahil 48 saat içinde) onayladı ve mühendisleriyle mimari uygunluk konusunu da tartıştı. Büyük ölçekli bir şirket olmasına rağmen esnek bir yanıt verdiğini gösterdi.
İşletici %99,4 CDN önbellek oranına ulaştıklarını ve sunucuların 1.000 rps yükünü de taşıyabildiğini gururla belirtti. Haftalık veri güncellemesi sunan bir servis için bu oldukça iyi bir performans.
Wplace.live Geliştiricileriyle İletişim ve Çözüm Önerileri
Daha sonra Wplace.live geliştiricileriyle temas kuruldu ve ani 2 milyonluk kullanıcı artışının hazırlıksız yakalanmalarına yol açtığı anlaşıldı. Bu ekip için OpenFreeMap self-hosting örnekleri desteği önerilerek, trafik yoğunlaşmasını engelleyip verimliliği artırma konusunda görüşüldü.
Ayrıca gerçek 2 milyon kullanıcıya göre 3 milyar istek oluşması, baskın oranda script tabanlı toplu istek olduğunu gösteriyor. Normal kullanıcılar yalnızca 10-20 istekle sınırlı kalırken, gereksiz otomatik istekleri önleyecek şekilde servis politikalarının değiştirilmesi önerildi.
Gelecekteki İyileştirmeler ve Öğrenilenler
Yönetici iki konu başlığına yönelik iyileştirme planından bahsediyor.
-
Referer tabanlı bant genişliği sınırlandırma
- Cloudflare'de referer bazlı isteklerin gün bazında 100 milyon ile 200 milyon arası sınırlanması planlanıyor
- Yerel (native) uygulamaları custom header kullanmaya yönlendirmek hedefleniyor
-
Eksik tile işleme ve sunucu yapılandırma iyileştirmesi
- Hatalı sunucu ayarlarıyla boş tile üretilmesini önleyici düzenlemeler yapılacak
OpenFreeMap şu anda aylık 500 dolar bağışla çalışıyor. Altyapı maliyeti karşılanabiliyor; ancak yeni geliştirmeler sınırlı kişisel zamana bağlı kalıyor. Daha fazla destekle geliştirme hızı ve hizmet kararlılığı artırılabilir.
GitHub sponsorluklarıyla projeye destek verebilirsiniz: https://github.com/sponsors/hyperknot
Henüz yorum yok.