Sıklık sınırlaması ve toplama davranışı

Profil isteği aşağıdaki durumlarda hemen tamamlanmayabilir veya sonuç vermeyebilir:

  • Sıklık sınırlaması: Cihaz performansını korumak için toplama işlemi kısıtlanır (Sıklık sınırlamasının işleyiş şekli bölümüne bakın).
  • Yayınlanmadan önce uygulamanın sonlandırılması: Uygulamanız yakalama sırasında kapanır veya kilitlenirse sistem, profili arka planda durdurup kaydeder ve uygulamanız bir sonraki kez çalıştığında (ön planda veya arka planda) sıraya alınan sonucu yayınlar ve genel bir dinleyici kaydeder. Sistem, dinleyici kaydı bekleyen teslim edilmemiş sıraya alınmış sonuçları 7 güne kadar saklar. Uygulamanız 7 gün içinde bir dinleyici kaydetmezse sıraya alınmış sonuç silinir.

  • Diğer hatalar: Toplama işlemi başarısız olursa (ör. geçersiz bir istek veya dahili hata nedeniyle) ProfilingResult, hata kodunu ve mesajını bildirir.

Sıklık sınırlamasının işleyiş şekli

Profil yakalama işlemi yoğun kaynak kullanımı gerektirdiğinden ProfilingManager, cihaz performansını ve pil ömrünü korumak için hem işlem düzeyinde hem de sistem düzeyinde sıklık sınırlaması uygular. Farklı profil türleri farklı kaynak maliyetlerine sahiptir ve sistem, kotaları iki düzeyde, kayan zaman pencereleri üzerinden izler:

  • İşlem sıklık sınırlaması: Uygulamanız tarafından toplanan profillerin kaynak maliyetini uygulama başına kota üzerinden izler. Her uygulama aynı kotayı alır ve cihazdaki diğer uygulamaların profil oluşturma etkinliği, uygulamanızın sınırını etkilemez. Uygulamanız herhangi bir zaman aralığı için kotasına ulaşırsa istekler ERROR_FAILED_RATE_LIMIT_PROCESS ile başarısız olur.
  • Sistem sıklık sınırlaması: Cihazdaki tüm uygulamalardan toplanan profillerin birleşik kaynak maliyetini, paylaşılan genel bir kotaya göre izler. Tüm uygulamalar cihaz genelindeki bu sınıra katkıda bulunduğundan, uygulamanız kendi işlem kotasını doldurmamış olsa bile bir istek ERROR_FAILED_RATE_LIMIT_SYSTEM ile başarısız olabilir.

Canlı sürümde profil hacmini yönetme

Cihaz düzeyindeki sıklık sınırları, profil türüne ve genel sistem etkinliğine bağlı olduğundan uygulamanızda tam yerel sıklık sınırı kotalarını izlemeye veya tahmin etmeye çalışmayın. Bunun yerine, ilgili bir kullanıcı yolculuğu veya anormallik gerçekleştiğinde profil oluşturma isteği göndermeye odaklanın ve cihaz üzerinde kısıtlama işlemini ProfilingManager'in yapmasına izin verin.

Yükleme bant genişliği ve depolama maliyetlerini yönetilebilir düzeyde tutarken sahadaki kapsamı en üst düzeye çıkarmak için popülasyon segmentasyonu ve deneme platformlarını (ör. uzaktan yapılandırma veya A/B testi işaretleri) kullanarak genel profil hacminizi kontrol edin:

  • Kullanıcı tabanınızdan örnekleme yapın: Her çalıştırmada her kullanıcıdan profil istemek yerine, kullanıcı oturumlarının küçük ve rastgele bir yüzdesi için profil oluşturmayı etkinleştirin.
  • Kohorta göre segmentlere ayırma: Gerileme tespit ettiğiniz belirli uygulama sürümlerini, cihaz kademelerini, OS sürümlerini veya bölgeleri hedefleyin (örneğin, yüksek OOM oranları yaşayan düşük RAM'li cihazlarda Java yığın dökümü toplamayı etkinleştirme).
  • Tetikleyicileri ve doğrudan istekleri kullanıcılar arasında segmentlere ayırma: Farklı profil oluşturma tetikleyicilerini ve doğrudan profil oluşturma isteklerini ayrı kullanıcı segmentlerine atayın. Böylece bazı kullanıcılar bir profili kaydederken diğerleri farklı bir profili kaydeder. Bir cihazdaki tüm yakalamalar aynı uygulama başına kotayı paylaştığından, bunları kullanıcı segmentleri arasında izole etmek, daha yüksek frekanslı tetikleyicilerin veya isteklerin tek bir cihazda daha düşük frekanslı yakalamalar için gereken kotayı tüketmesini önler.