
Cloudflare, Workers ve Durable Objects için CPU ve bellek profilleme talep üzerine ekledi
Cloudflare artık Workers ve Durable Objects için CPU ve bellek profillemeyi talep üzerine destekliyor; interaktif flamegraph'ler panelden veya CLI'dan üretim trafiği için erişilebilir.
Workers ve Durable Objects için talep üzerine profilleme
Cloudflare, Workers ve Durable Objects için CPU ve bellek profillemeyi talep üzerine ekledi. Workers Observability sayfasından geliştiriciler aktif Worker'ın profiline talep edebilir, interaktif flamegraph ile inceleyebilir ve dosyayı indirebilir. Şirkete göre, profilleme üretimde uygulama davranışını anlamanın en iyi yoludur.
Profil nasıl alınır
Oturum Cloudflare Paneli'nden veya CLI'dan başlar. Panel'de Worker'ı seçin, Observability'yi açın ve Flamegraph menüsünden CPU veya bellek profili talep edin, süre ve sürümü seçin. CLI için cf paketi ve komut gerekir, örneğin cf workers versions profile latest worker ID, süre ve tip ile; çıktı pprof dosyasıdır.
Worker'ın profillenmesi için yeterli trafik gerekir, bu yüzden aktif sürümü seçin. Flamegraph'te dikdörtgen, fonksiyonun çağrısı, genişliği onun CPU zamanını veya belleği gösterir; tıklamak odağa odaklanır, imleç detayları gösterir, tabloda sık kullanılan fonksiyonlar. TypeScript projelerinde source map'lerini açın, yoksa isimler karışık görünür.
Gerçek sonuçlar
Cloudflare ekipleri bu özelliği zaten bellek ve CPU optimizasyonu, out-of-memory hatalarını düzeltme ve verimliliği artırmak için kullandı. R2 binding'li Worker'ın CPU profili, CPU zamanının %5'inden fazlasının genericR2JsonReplacer'a gittiğini gösterdi çünkü JSON.stringify ağaç üzerine rekürse ediyordu. Düzeltme fonksiyonu 2,7 kat hızlandırdı. Yinelenen metrik çağrısı da CPU zamanının yaklaşık %1'ini sonucu değişkende saklayarak ortadan kaldırdı.
Dahili Worker 128 MB limitine takılırdı: P999 bellek yaklaşık 133 MB idi ve sık sık „Exceeded Memory“ eviction'ları oluyordu. Üretimde alınan heap profili (pprof), dağıtımların yaklaşık %66,7'sinin Prometheus koduna gittiğini gösterdi, oysa bu kodu devre dışı bırakmak gerekiyordu. Kaldırma P50'yi 70'ten 54 MB'ye, P90'ı 94'ten 79 MB'ye, P99'u 113'ten 97 MB'ye, P999'u ise 133'ten 118 MB'ye düşürdü.
Nasıl çalışır ve sıradaki adım
Profilleme gerçek üretim yürütmesini etkiler, bu yüzden yeni bir izolat başlatılmaz. Runtime'ın hangi sürümün profilleneceğini, izolatinin yüklenip yüklenmediğini ve hesaba ait olup olmadığını bilmesi gerekir. Durable Objects için talep belirli bir nesne adına yönlendirilir ve aktörü oluşturan metal üzerine geçer.
Trafiğin engellenmesini önlemek için Workers Runtime izolat kilidini yalnızca profillerin hayati döngü işlemleri için alır. CPU profili için V8 CPU profillerini 1 milisaniyelik aralıkla oluşturur, kilidi bırakır, belirtilen süreyi bekler ve ardından sonucu durdurmak ve seri hale getirmek için yeniden alır.
Cloudflare kısıtlamaları belirtir: oturumlar manuel başlatılmalıdır, bu yüzden kısa süreli sorunlar kaçırılabilir; bellek profalayıcı yalnızca profilleme penceresini kaplar, yükleme sırasındaki dağıtımları atlar. Şirket, geliştiricilerin panoda profilleri manuel başlatmadan görebilmesi için otomatik örnekler toplayan sürekli profilleme üzerinde çalışıyor.
Kaynaklar: The Cloudflare Blog
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.