Halaman ini memberikan tips pemecahan masalah untuk memulai Performance Monitoring atau menggunakan berbagai fitur dan alat Performance Monitoring.
Pemeriksaan awal untuk pemecahan masalah
Kedua pemeriksaan berikut adalah praktik terbaik umum yang direkomendasikan untuk siapa pun sebelum memecahkan masalah lebih lanjut.
1. Memeriksa peristiwa performa pada pesan log
Periksa pesan log Anda untuk memastikan bahwa Performance Monitoring SDK mencatat peristiwa performa.
Cara melihat peristiwa performa pada pesan log
Buka alat developer browser (misalnya, tab Network untuk Chrome Dev Tools atau di Network Monitor untuk Firefox).
Refresh aplikasi web Anda di browser.
Periksa apakah ada pesan error di pesan log Anda.
Setelah beberapa detik, cari panggilan jaringan ke
firebaselogging.googleapis.com
di alat developer browser Anda. Jika ada panggilan jaringan, berarti browser mengirim data performa ke Firebase.
Jika aplikasi Anda tidak mencatat peristiwa performa ke dalam log, baca tips pemecahan masalah.
2. Memeriksa Dasbor Status Firebase
Periksa Dasbor Status Firebase untuk melihat apakah ada gangguan layanan yang diketahui untuk Firebase atau untuk Performance Monitoring.
Mulai menggunakan Performance Monitoring
Jika Anda baru mulai menggunakan Performance Monitoring (iOS+ | Android | Web), tips pemecahan masalah berikut dapat membantu mengatasi masalah terkait pendeteksian SDK oleh Firebase atau penampilan data performa pertama Anda di Firebase console.
Sudah menambahkan SDK ke aplikasi, tetapi konsol masih tetap meminta menambahkan SDK
Firebase dapat mendeteksi apakah Anda berhasil menambahkan Performance Monitoring SDK ke aplikasi saat menerima informasi peristiwa (seperti interaksi aplikasi) dari aplikasi. Biasanya dalam waktu 10 menit setelah memulai aplikasi, dasbor Performa Firebase console menampilkan pesan "SDK terdeteksi". Kemudian, dalam waktu 30 menit, dasbor akan menampilkan data awal yang diproses.
Jika sudah lebih dari 10 menit berlalu sejak versi SDK terbaru ditambahkan ke aplikasi dan Anda belum melihat perubahan apa pun, periksa pesan log untuk memastikan Performance Monitoring mencatat peristiwa ke dalam log. Coba langkah pemecahan masalah yang sesuai seperti yang dijelaskan di bawah untuk memecahkan masalah pesan deteksi SDK yang tertunda.
Aplikasi mencatat peristiwa ke dalam log: langkah pemecahan masalah
Jika Anda masih melakukan pengembangan secara lokal, cobalah membuat lebih banyak peristiwa untuk pengumpulan data:
Salurkan dan tampilkan aplikasi web Anda di lingkungan lokal.
Hasilkan peristiwa dengan memuat subhalaman untuk situs Anda, berinteraksi dengan aplikasi Anda, dan/atau memicu permintaan jaringan. Pastikan Anda membiarkan tab browser terbuka setidaknya selama 10 detik setelah halaman dimuat.
Pastikan objek konfigurasi Firebase ditambahkan dengan benar ke aplikasi dan objek tersebut belum diubah. Khususnya, pastikan hal berikut:
- ID Aplikasi Web Firebase (
appId
) di objek konfigurasi sudah benar untuk aplikasi. Temukan ID Aplikasi Firebase di kartu Your apps pada settings Project settings.
Jika merasa ada yang salah dengan objek konfigurasi di aplikasi Anda, coba langkah berikut:
Hapus objek konfigurasi yang saat ini Anda miliki di aplikasi.
Ikuti petunjuk ini untuk mendapatkan objek konfigurasi baru dan menambahkannya ke aplikasi web Anda.
- ID Aplikasi Web Firebase (
Jika SDK mencatat peristiwa ke dalam log dan sepertinya semua telah disiapkan dengan benar, tetapi Anda masih belum melihat pesan deteksi SDK atau data yang diproses (setelah 2 jam), hubungi Dukungan Firebase.
Aplikasi tidak mencatat peristiwa ke dalam log: langkah pemecahan masalah
Pastikan bahwa Performance Monitoring SDK diinisialisasi dengan benar di aplikasi Anda.
Pastikan bahwa Performance Monitoring SDK tidak dinonaktifkan melalui flag berikut:
performance.instrumentationEnabled
Pastikan bahwa caching browser Anda dinonaktifkan. Jika tidak, browser mungkin tidak menangkap setelan instrumentasi baru.
Tutup, lalu buka kembali tab halaman web. Periksa logging kembali.
Jika Performance Monitoring SDK baru saja ditambahkan di aplikasi, Anda mungkin perlu memulai ulang aplikasi agar SDK mulai bekerja.
Jika Anda tidak dapat menemukan apa pun yang dinonaktifkan di aplikasi Anda, hubungi Dukungan Firebase.
Console mendeteksi SDK, tetapi tidak ada data yang ditampilkan
Performance Monitoring memproses data peristiwa performa sebelum menampilkannya di dasbor Performance.
Jika sudah lebih dari 24 jam berlalu sejak pesan "SDK detected" muncul dan data tetap belum terlihat, periksa Dasbor Status Firebase untuk melihat apakah terjadi gangguan layanan yang diketahui. Jika tidak ada gangguan layanan, hubungi Dukungan Firebase.
Pemecahan masalah umum
Jika Anda berhasil menambahkan SDK dan menggunakan Performance Monitoring di aplikasi, tips pemecahan masalah berikut dapat membantu mengatasi masalah umum yang melibatkan fitur dan serangkaian alat Performance Monitoring.
Aplikasi tidak mencatat peristiwa performa ke dalam log
Jika Anda tidak melihat pesan log untuk peristiwa performa, coba langkah pemecahan masalah berikut:
Pastikan bahwa Performance Monitoring SDK diinisialisasi dengan benar di aplikasi Anda.
Pastikan bahwa Performance Monitoring SDK tidak dinonaktifkan melalui flag berikut:
performance.instrumentationEnabled
Pastikan bahwa caching browser Anda dinonaktifkan. Jika tidak, browser mungkin tidak menangkap setelan instrumentasi baru.
Tutup, lalu buka kembali tab halaman web. Periksa logging kembali.
Jika Performance Monitoring SDK baru saja ditambahkan di aplikasi, Anda mungkin perlu memulai ulang aplikasi agar SDK mulai bekerja.
Jika Anda tidak dapat menemukan apa pun yang dinonaktifkan di aplikasi Anda, hubungi Dukungan Firebase.
Tidak ada data penundaan input pertama di dasbor Performance
Jika data untuk metrik penundaan input pertama tidak muncul, cobalah langkah pemecahan masalah berikut:
Perlu diketahui bahwa Performance Monitoring hanya mencatat metrik penundaan input pertama saat pengguna mengklik halaman web dalam 5 detik pertama setelah halaman dimuat.
Pastikan Anda telah menyiapkan aplikasi untuk mengukur metrik ini. Metrik first input delay memerlukan penyiapan manual. Secara khusus, Anda perlu menambahkan library polyfill untuk metrik ini. Untuk petunjuk penginstalan, buka dokumentasi library ini.
Perhatikan bahwa Anda tidak perlu menambahkan library polyfill ini untuk membuat Performance Monitoring melaporkan metrik aplikasi web lainnya.
Tidak ada data trace kustom di dasbor Performance
Apakah Anda melihat data performa untuk trace yang dikumpulkan secara otomatis, tetapi tidak untuk trace kode kustom? Coba langkah-langkah pemecahan masalah berikut:
Periksa penyiapan trace kode kustom yang diinstrumentasikan melalui Trace API, terutama yang berikut ini:
- Nama untuk trace kode kustom dan metrik kustom harus memenuhi persyaratan berikut: tidak boleh ada spasi kosong di awal atau akhir, tidak boleh diawali karakter garis bawah (
_
), dan panjang maksimal adalah 32 karakter. - Semua trace harus dimulai dan dihentikan. Setiap trace yang belum dimulai, tidak dihentikan, atau dihentikan sebelum dimulai tidak akan dicatat dalam log.
Perlu diperhatikan bahwa jika Anda menggunakan metode
record()
, Anda tidak perlu secara eksplisit memulai atau menghentikan trace.- Nama untuk trace kode kustom dan metrik kustom harus memenuhi persyaratan berikut: tidak boleh ada spasi kosong di awal atau akhir, tidak boleh diawali karakter garis bawah (
Pastikan pengumpulan data Performance Monitoring tidak dinonaktifkan melalui flag berikut:
performance.dataCollectionEnabled
Flag ini mengontrol pengumpulan data hanya untuk trace kode kustom (bukan semua data).
Periksa pesan log Anda untuk memastikan bahwa Performance Monitoring mencatat log trace kode kustom yang diharapkan.
Jika Performance Monitoring mencatat peristiwa ke dalam log, tetapi tidak ada data yang ditampilkan setelah 24 jam, hubungi Dukungan Firebase.
Tidak ada data permintaan jaringan pada dasbor Performance
Jika data permintaan jaringan tidak muncul, perhatikan hal-hal berikut:
Performance Monitoring mengumpulkan metrik secara otomatis untuk permintaan jaringan yang dilaporkan oleh API browser. Laporan ini tidak menyertakan permintaan jaringan yang gagal.
Bergantung pada perilaku kode dan library jaringan yang digunakan oleh kode Anda, Performance Monitoring mungkin hanya melaporkan permintaan jaringan yang telah selesai. Ini berarti koneksi HTTP/S yang dibiarkan terbuka mungkin tidak dilaporkan.
Data permintaan jaringan tidak diagregasikan seperti yang diharapkan
Pelajari cara Performance Monitoring mengagregasikan data permintaan jaringan berdasarkan pola URL lebih lanjut.
Anda juga dapat mencoba pola URL kustom.
FAQ
Apa yang terjadi dengan Top Issues di kartu Performance di beranda Project?
Kami mengganti Top Issues dengan Recent Alerts sebagai tindak lanjut dari pemberitahuan kami yang baru-baru ini diperkenalkan, yang secara otomatis akan memberi tahu Anda jika batas yang telah ditetapkan sudah terlampaui. Issues (masalah) kini tidak digunakan lagi dan diganti dengan alerts (pemberitahuan).
Pemilih aplikasi di bagian atas kartu Performance memfilter entri pemberitahuan di bagian Recent Alerts. Hanya tiga pemberitahuan terbaru untuk aplikasi yang dipilih yang ditampilkan.
Untuk mempelajari pemberitahuan lebih lanjut, lihat Menyiapkan pemberitahuan untuk masalah performa.
Apa yang terjadi pada kemampuan menetapkan nilai minimum untuk masalah di konsol?
Performance Monitoring mendukung pemberitahuan untuk metrik yang melebihi nilai minimum yang ditentukan. Untuk mencegah kebingungan mengenai nilai minimum yang dapat dikonfigurasi untuk metrik performa ini, kami menghapus kemampuan mengonfigurasi nilai minimum untuk masalah.
Apa yang terjadi pada informasi Details dan Metrics di Firebase console?
Kami mengganti halaman Details and Metrics dengan antarmuka pengguna (UI) terpusat baru yang didesain ulang untuk memudahkan Anda memecahkan masalah. UI pemecahan masalah yang baru ini menawarkan fungsi inti yang sama dengan yang ditawarkan halaman Details and Metrics. Untuk mempelajari pemecahan masalah lebih lanjut, baca Melihat data lainnya untuk trace tertentu.
Mengapa jumlah sampel tidak sesuai dengan yang saya harapkan?
Performance Monitoring mengumpulkan data performa dari perangkat pengguna aplikasi Anda. Jika aplikasi Anda memiliki banyak pengguna atau jika aplikasi menghasilkan banyak aktivitas performa, Performance Monitoring mungkin membatasi pengumpulan data hanya pada sebagian perangkat guna mengurangi jumlah peristiwa yang diproses. Batas ini cukup tinggi sehingga, meskipun dengan peristiwa yang lebih sedikit, nilai metrik masih mewakili pengalaman aplikasi pengguna Anda.
Untuk mengelola volume data yang kami kumpulkan, Performance Monitoring menggunakan opsi pengambilan sampel berikut:
Pembatasan kapasitas di perangkat: Agar perangkat tidak mengirim burst trace secara tiba-tiba, kami membatasi jumlah trace permintaan jaringan dan kode yang dikirim dari perangkat ke 300 peristiwa setiap 10 menit. Pendekatan ini melindungi perangkat dari instrumentasi berulang yang dapat mengirim data performa dalam jumlah besar, dan mencegah satu perangkat mendistorsi pengukuran performa.
Pengambilan sampel dinamis: Performance Monitoring mengumpulkan batas sekitar 100 juta peristiwa untuk trace kode dan 100 juta untuk trace permintaan jaringan per aplikasi setiap hari untuk semua pengguna aplikasi. Frekuensi sampling dinamis diambil di perangkat (menggunakan Firebase Remote Config) untuk menentukan apakah perangkat acak harus mengambil dan mengirim trace. Perangkat yang tidak dipilih untuk pengambilan sampel tidak akan mengirim peristiwa apa pun. Frekuensi sampling dinamis bersifat khusus aplikasi dan disesuaikan untuk memastikan volume keseluruhan data yang dikumpulkan tetap di bawah batas.
Sesi pengguna mengirim detail data tambahan dari perangkat pengguna, yang memerlukan lebih banyak resource untuk mengambil dan mengirim data. Untuk meminimalkan dampak sesi pengguna, Performance Monitoring juga dapat membatasi jumlah sesi.
Pembatasan kapasitas sisi server: Untuk memastikan aplikasi tidak melebihi batas pengambilan sampel, Performance Monitoring mungkin menggunakan pengambilan sampel sisi server untuk menghapus beberapa peristiwa yang diterima dari perangkat. Meskipun jenis pembatasan ini tidak mengubah keefektifan metrik kami, hal ini dapat menyebabkan perubahan pola yang kecil, termasuk berikut:
- Jumlah trace dapat berbeda dengan frekuensi eksekusi kode.
- Setiap trace yang dikaitkan secara erat dalam kode mungkin memiliki jumlah sampel yang berbeda.
Apa yang terjadi pada tab Issues di console?
Kami mengganti tab Issues dan memperkenalkan Alerts, yang otomatis memberi tahu Anda saat nilai minimum yang Anda tetapkan terlampaui. Anda tidak perlu lagi memeriksa Firebase console secara manual untuk menentukan status nilai minimum. Untuk mempelajari Alerts, lihat Menyiapkan notifikasi untuk masalah performa.
Apa yang terjadi pada tab On Device dan Network di console? Bagaimana cara melihat trace yang ada di halaman tersebut?
Kami telah mendesain ulang bagian Performance Monitoring pada Firebase console sehingga tab Dashboard menampilkan metrik utama dan semua trace Anda dalam satu ruang. Sebagai bagian dari desain ulang ini, kami menghapus halaman On Device dan Network.
Tabel trace di bagian bawah tab Dashboard memiliki semua informasi yang sama dengan yang ditampilkan tab On Device dan Network, tetapi dengan beberapa fitur tambahan, termasuk kemampuan untuk mengurutkan trace Anda berdasarkan perubahan persentase untuk metrik tertentu. Untuk melihat semua metrik dan data untuk trace tertentu, klik nama trace di tabel trace.
Lihat trace Anda dalam subtab tabel trace berikut:
- Trace permintaan jaringan (siap pakai dan kustom) — subtab Network requests
- Trace kode kustom — subtab Custom traces
- Trace aplikasi dimulai, aplikasi di latar depan, aplikasi di latar belakang — subtab Custom traces
- Trace rendering layar — subtab Screen rendering
- Trace pemuatan halaman — subtab Page load
Untuk melihat detail tentang tabel trace serta cara melihat metrik dan data, buka halaman ringkasan console (iOS+ | Android | Web).
Mengapa jumlah periode frozen dan lambat tidak seperti yang saya harapkan?
Periode rendering lambat dan periode frozen dihitung dengan asumsi kecepatan refresh perangkat sebesar 60 Hz. Jika kecepatan refresh perangkat lebih rendah dari 60 Hz, setiap periode akan memiliki waktu rendering yang lebih lambat karena lebih sedikit periode yang dirender per detik. Waktu rendering yang lebih lambat dapat menyebabkan lebih banyak periode lambat atau frozen yang dilaporkan karena lebih banyak periode yang akan dirender lebih lambat atau akan dibekukan. Namun, jika kecepatan refresh perangkat lebih tinggi dari 60 Hz, setiap periode akan memiliki waktu rendering yang lebih cepat. Ini dapat menyebabkan lebih sedikit periode frozen atau periode lambat yang dilaporkan. Ini adalah batasan terbaru di Performance Monitoring SDK.
Bagaimana cara menambahkan Performance Monitoring JS SDK yang lebih kecil dan dengan namespace (SDK "mandiri") ke aplikasi web saya?
Jika Performance Monitoring adalah satu-satunya produk Firebase di aplikasi Anda, gunakan Performance Monitoring SDK mandiri (dan skrip header yang disarankan di bawah) jika Anda ingin:
- menggunakan library dengan namespace
- mengurangi ukuran paket SDK Anda
- menunda inisialisasi SDK hingga setelah halaman Anda dimuat
Untuk memasukkan Performance Monitoring SDK mandiri ke dalam aplikasi Anda dan menunda inisialisasinya hingga setelah halaman dimuat:
- Tambahkan skrip berikut ke header file indeks Anda.
- Pastikan untuk menambahkan objek konfigurasi project Firebase aplikasi Anda.
(function(sa,fbc){function load(f,c){var a=document.createElement('script'); a.async=1;a.src=f;var s=document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(a,s);}load(sa); window.addEventListener('load',function(){firebase.initializeApp(fbc).performance()}); })(performance_standalone, firebaseConfig);
dalam hal ini,
- performance_standalone merupakan
'https://www.gstatic.com/firebasejs/10.12.4/firebase-performance.js'
- firebaseConfig adalah objek konfigurasi Firebase aplikasi Anda
Skrip di atas memuat SDK mandiri secara asinkron, lalu menginisialisasi Firebase setelah peristiwa onload
jendela aktif. Taktik ini mengurangi dampak SDK pada metrik page load karena browser telah melaporkan metrik pemuatannya saat Anda melakukan inisialisasi SDK.
Mempelajari Performance Monitoring SDK mandiri dan skrip headernya
SDK mandiri ini dioptimalkan ukurannya; jika dikompresi menggunakan Gzip, berukuran sekitar 10 kb. SDK ini memiliki semua fungsionalitas Firebase Performance Monitoring serta sekumpulan minimal fungsionalitas Firebase core SDK.
Firebase Performance Monitoring menggunakan fetch
API dan Promise
API yang tidak tersedia di browser lama. Polyfill untuk API ini termasuk dalam Firebase Performance Monitoring JS SDK standar, tetapi dihapus dari SDK mandiri untuk mengurangi ukuran.
Performance Monitoring SDK sebagian mengandalkan Resource Timing API untuk mendapatkan metrik page load dari browser.
Cuplikan berikut menguraikan skrip header yang menyertakan kemudian menunda inisialisasi SDK:
(function(sdkSource, firebaseConfigObject) { function load(f, c) { // Creates a script tag to load the standalone SDK var sdkScript = document.createElement('script'); // Sets it to an async script so that it doesn't interfere with page load sdkScript.async = 1; // Sets the source of the script sdkScript.src = f; // Inserts the script into the head of the page var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(sdkScript, s); } // Calls the load method load(sdkSource); // Initializes the SDK only when the onload method is called window.addEventListener('load', function() { firebase.initializeApp(firebaseConfigObject).performance(); }); })(performance_standalone, firebaseConfig);
dalam hal ini,
- performance_standalone merupakan
'https://www.gstatic.com/firebasejs/10.12.4/firebase-performance-standalone.js'
- firebaseConfig adalah objek konfigurasi Firebase aplikasi Anda
Tampilan dan pemrosesan data hampir real-time
Apa yang dimaksud dengan data performa "hampir real-time"?
Firebase Performance Monitoring memproses data performa yang dikumpulkan saat data tersebut masuk, sehingga menghasilkan tampilan data yang hampir real-time di Firebase console. Data yang diproses akan ditampilkan di console dalam beberapa menit setelah dikumpulkan, sehingga disebut "hampir real-time".
Untuk memanfaatkan pemrosesan data hampir real-time, pastikan aplikasi Anda menggunakan versi SDK yang kompatibel secara real-time.
Bagaimana cara mendapatkan data performa hampir real-time untuk aplikasi saya?
Untuk memanfaatkan pemrosesan data hampir real-time, Anda hanya perlu memastikan bahwa aplikasi Anda menggunakan versi Performance Monitoring SDK yang kompatibel dengan pemrosesan data real-time.
Berikut ini versi SDK yang kompatibel secara real-time:
- iOS — v7.3.0 atau yang lebih baru
- tvOS — v8.9.0 atau yang lebih baru
- Android — v19.0.10 atau yang lebih baru (atau Firebase Android BoM v26.1.0 atau yang lebih baru)
- Web — v7.14.0 atau yang lebih baru
Perhatikan bahwa kami selalu merekomendasikan penggunaan SDK versi terbaru, tetapi semua versi yang tercantum di atas akan memungkinkan Performance Monitoring memproses data Anda secara hampir real-time.
Versi Performance Monitoring SDK mana yang dianggap kompatibel secara real-time?
Berikut ini versi SDK yang kompatibel dengan pemrosesan data real-time:
- iOS — v7.3.0 atau yang lebih baru
- tvOS — v8.9.0 atau yang lebih baru
- Android — v19.0.10 atau yang lebih baru (atau Firebase Android BoM v26.1.0 atau yang lebih baru)
- Web — v7.14.0 atau yang lebih baru
Perhatikan bahwa kami selalu merekomendasikan penggunaan SDK versi terbaru, tetapi semua versi yang tercantum di atas akan memungkinkan Performance Monitoring memproses data Anda secara hampir real-time.
Apa konsekuensinya jika saya tidak mengupdate aplikasi untuk menggunakan versi SDK yang kompatibel secara real-time?
Jika aplikasi Anda tidak menggunakan versi SDK yang kompatibel secara real-time, Anda akan tetap dapat melihat semua data performa aplikasi di Firebase console. Namun, tampilan data performa akan tertunda sekitar 36 jam dari waktu pengumpulannya.
Saya telah mengupdate ke versi SDK yang kompatibel secara real-time, tetapi beberapa pengguna masih menggunakan versi lama dari aplikasi saya. Apakah saya akan terus melihat data performa mereka di Firebase console?
Ya. Terlepas dari versi SDK yang digunakan instance aplikasi, Anda akan melihat data performa dari semua pengguna.
Namun, jika Anda melihat data terbaru (kurang dari 36 jam terakhir), data yang ditampilkan akan berasal dari pengguna instance aplikasi yang menggunakan versi SDK yang kompatibel secara real-time. Namun, data yang bukan terbaru akan mencakup data performa dari semua versi aplikasi Anda.
Menghubungi Dukungan Firebase
Ketika menghubungi Dukungan Firebase, selalu sertakan ID Aplikasi Firebase Anda. Temukan ID Aplikasi Firebase di kartu Your apps pada settings Project settings.