Firebase KSA'ya yerleşik olarak bulunan veritabanı profil oluşturma aracıyla Firebase Realtime Database performansını ölçün. Profiler aracı, veritabanınızdaki tüm etkinlikleri belirli bir süre boyunca günlüğe kaydeder ve ardından ayrıntılı bir rapor oluşturur. Veritabanı performansınızla ilgili sorunları gidermek, sorunlu alanları belirlemek ve dizine eklenmemiş sorguları azaltmak için ayrıntılı raporu kullanın.
Profil oluşturma
Firebase Realtime Database uygulamanızda profil oluşturmaya başlamadan önce Firebase KSA'nın en son sürümünü kullandığınızdan ve profil oluşturmak istediğiniz veritabanı ve proje için KSA'yı başlattığınızdan emin olun. Profil oluşturmak istediğiniz projenin düzenleyicisi veya sahibi olmanız gerekir.
Aşağıdaki komutla veritabanınızda profil oluşturmaya başlayın:
Profiler, veritabanınızdaki işlemleri kaydederken ve profili oluştururken bir durum mesajı gösterir.firebase database:profile
Profili tamamlamak ve sonuçları görüntülemek için Enter tuşuna basın.
Sonuçlarınızı yorumlama
Profil oluşturma aracı, veritabanınızın işlemleri hakkında topladığı verileri birleştirir ve sonuçları üç ana kategoride gösterir: hız, bant genişliği ve dizinlenmemiş sorgular.
Hız
Hız raporu, her işlem türü için sunucunun yanıt süresini (milisaniye cinsinden) ölçer. Ancak Hız raporunda ölçülen hız, son kullanıcıların deneyimlediği hızı yansıtmayabilir. Ağ koşulları da dahil olmak üzere farklı faktörler istemci tarafında gecikmeye neden olabilir.
Hız raporu aşağıdaki özellikleri içerir:
- Yol: İşlemlerin gerçekleştiği veritabanınızdaki yol. 25'ten fazla alt düğüm varsa profiler aracı bunları bir üst yolda daraltır ve
$wildcard
işaretini ekler. Raporunuzda, veritabanınızın kök dizinini eğik çizgiyle/
temsil edilmiş şekilde görebilirsiniz. - Sayı: Belirli bir yolda gerçekleşen işlem sayısı.
- Ortalama Yürütme Hızı: Sunucunun, bu yoldaki belirli işlem türünü işlemek için gereken iş mantığını yürütmesinin ortalama süresi. Burada ölçülen zaman aralığı, aşağıda açıklanan "Ortalama Beklemede Kalma Süresi" ile ölçülen sürenin ardından başlar.
- Ortalama Bekleme Süresi: İsteklerin yürütülmeden önce kuyrukta beklediği ortalama süre. Bu gecikme, istemci tarafından başlatılan tüm isteklerde görülür. Toplam sunucu tarafı istek gecikmesi, söz konusu isteğin bekleme süresi ve yürütme hızının toplamıdır.
- İzin Reddedildi: Belirtilen yolda, veritabanınızdaki Firebase veritabanı kuralları tarafından engellenen işlemlerin sayısı.
İşlem Türüne Göre Hız Raporu | |
---|---|
Okuma Yürütme Hızı | İstemci isteklerinin veritabanından veri okuması için gereken sunucu yanıt süresi. Okuma yürütme süresi genellikle okunan veri miktarıyla orantılı olarak artar ancak küçük okumaların bazıları da önceden getirme işlemi nedeniyle gecikebilir. |
Yazma İşlemi Hızı | İstemci isteklerinin veritabanına veri yazması için gereken sunucu yanıt süresi. Yazma yürütme süresi, yazılan veri miktarıyla orantılıdır. |
Bağlantı Yürütme Hızı | Veritabanı istemcileriyle bağlantı kurma isteklerinin sunucu yanıt süresi. Bağlantı istekleriyle ilgili gecikme süresine, bağlantı yönetimiyle ilgili bellek içi sunucu tarafı muhasebe işlemleri hakimdir. |
Yayın Yürütme Hızı | Sunucunun, verileri gerçek zamanlı güncellemeler için belirli yolu dinleyen istemcilere dağıtması için gereken süre. Yayın Hızı Raporu'ndaki Sayı özelliği, bilgileri alan istemcilerin sayısını değil, gerçekleşen yayınların sayısını toplar. Örneğin, belirli bir yolda 10 istemci dinliyorsa ve sunucu 10 istemcinin tamamına bir güncelleme yayınlıyorsa yayın sayısı, 10 istemci verileri almasına rağmen yalnızca 1 yayın olarak yansıtılır. İzin Reddedildi özelliği, Yayın Hızı raporuna dahil edilmez. |
Bant genişliği
Bant genişliği raporu, veritabanınızın gelen ve giden işlemler genelinde ne kadar veri kullandığı hakkında bilgi sağlar. Ancak, veritabanınıza profil oluşturma gibi diğer işlemler için kullanılan bant genişliğini içermediğinden faturalandırmayı tahmin etmek için bant genişliği raporunu kullanmamalısınız. Bant genişliği raporu, veritabanınızda okuma, yazma ve yayın işlemleriyle kullanılan verilerin yaklaşık olarak yük boyutunu tahmin eder. Bu araç, faturalandırmayı tahmin etmez, performansı ölçer.
Bant genişliği raporu aşağıdaki özellikleri içerir:
Yol: İşlemlerin gerçekleştiği veritabanınızdaki yol. 25'ten fazla alt düğüm varsa profiler aracı bunları bir üst yolda daraltır.
Toplam: Belirli bir yoldaki tüm işlemlerde kullanılan toplam giden veya gelen bayt sayısı.
Sayı: Belirli bir yolda gerçekleşen işlem sayısı.
Ortalama: Belirli bir yoldaki işlemler genelinde indirilen veya yüklenen ortalama bayt sayısı (bayt/yazma veya bayt/okuma).
Bant genişliği raporu | |
---|---|
İndirilen Baytlar | İstemci SDK'ları ve REST API aracılığıyla gönderilen okuma ve yayın işlemleriyle kullanılan veriler. |
Yüklenen Baytlar | Veritabanı sunucusuna gelen yazma istekleri aracılığıyla kullanılan veriler. Silme işlemleri, gelen altında 0 baytlık yazma işlemleri olarak gösterilir. |
Dizine Eklenmemiş Sorgular
Dizinlenmemiş sorgular, istemciler bir konumdaki tüm verileri indirip ardından bu veriler üzerinde sorgu gerçekleştirdiği için maliyetli olabilir. Bu, gerekenden daha fazla bant genişliği kullanır. Veritabanınızın performansını optimize etmek için mümkün olduğunca çok sayıda dizine eklenmemiş sorguyu çözün.
Dizinlenmemiş Sorgular raporunda aşağıdaki özellikler gösterilir:
- Yol: Dizinlenmemiş sorguların gerçekleştiği veritabanınızdaki yol.
- Dizin: Dizinlenmemiş sorguları çözmek için eklemeniz gereken kural. Verilerinizi dizine ekleme başlıklı makalede dizine ekleme hakkında daha fazla bilgi edinin.
- Sayı: Belirtilen yolda gerçekleşen, dizine eklenmemiş sorguların sayısı.
Gelişmiş profil oluşturma
Veritabanınızın işlediği tüm işlemleri görmek için veritabanınızın profilini oluştururken --raw
işaretini aşağıdaki şekilde kullanın:
firebase database:profile --raw
Ham çıktı, her işlem için istemci bilgilerini de içerir. Örneğin:
userAgent
dizeler ve IP adresleri. Firebase Realtime Database bölümünde profili oluşturulan farklı işlemler hakkında daha fazla bilgi edinin. Firebase Realtime Database İşlem Türleri.
Profiler aracı: Faturalandırma aracı değildir.
Bant genişliği maliyetini tahmin etmek için profiler aracını kullanmayın. Profiler aracı, faturalandırmayı tahmin etmek için değil, veritabanınızın performansı hakkında genel bir fikir vermek, işlemleri izlemenize ve sorunları gidermenize yardımcı olmak için tasarlanmıştır. Ağ trafiğini hesaba katmaz, yalnızca yanıtlarda gönderilen uygulama verilerinin tahminini kaydeder.
Aşağıda, Firebase tarafından faturalandırılan ve veritabanı profilinizde yer almayan ağ trafiğine ilişkin bazı yaygın örnekler verilmiştir:
- Protokol ek yükü: Bir oturumun oluşturulması ve sürdürülmesi için sunucu ile istemciler arasında ek trafik gerekir. Temel protokole bağlı olarak bu trafik şunları içerebilir: Firebase Realtime Database'in gerçek zamanlı protokol ek yükü, WebSocket ek yükü ve HTTP başlığı ek yükü. Her bağlantı kurulduğunda bu ek yük, SSL şifreleme ek yüküyle birlikte bağlantı maliyetlerine katkıda bulunur. Bu genellikle büyük bir bant genişliği miktarı olmasa da yükleriniz küçükse veya sık sık kısa bağlantılar yapıyorsanız önemli olabilir.
- SSL şifreleme ek yükü: Güvenli bağlantılar için gerekli olan SSL şifreleme ek yüküyle ilişkili bir maliyet vardır. Bu maliyet, ortalama olarak ilk el sıkışma için yaklaşık 3,5 KB, her giden mesajdaki TLS kaydı başlıkları için ise yaklaşık 40 B'dir. Çoğu uygulama için bu, faturanızın küçük bir yüzdesidir. Ancak, belirli bir durumda çok sayıda SSL el sıkışması gerekiyorsa bu oran yüksek olabilir. Örneğin, TLS oturum biletlerini desteklemeyen cihazlar çok sayıda SSL bağlantı el sıkışması gerektirebilir.
Faturanızı anlama ve tahmin etme hakkında daha fazla bilgi edinin.