Pemecahan masalah dan FAQ Performance Monitoring


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 menangkap peristiwa performa.

  1. Buka alat developer browser (misalnya, tab Network untuk Chrome Dev Tools atau di Network Monitor untuk Firefox).

  2. Refresh aplikasi web Anda di browser.

  3. Periksa apakah ada pesan error di pesan log Anda.

  4. 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 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.

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 Performance di 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.

  1. Jika Anda masih melakukan pengembangan secara lokal, cobalah membuat lebih banyak peristiwa untuk pengumpulan data:

    1. Salurkan dan tampilkan aplikasi web Anda di lingkungan lokal.

    2. 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.

  2. 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 Project settings.

    Jika merasa ada yang salah dengan objek konfigurasi di aplikasi Anda, coba langkah berikut:

    1. Hapus objek konfigurasi yang saat ini Anda miliki di aplikasi.

    2. Ikuti petunjuk ini untuk mendapatkan objek konfigurasi baru dan menambahkannya ke aplikasi web Anda.

  3. 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.

  1. Pastikan Performance Monitoring SDK sudah benar diinisialisasi di aplikasi Anda.

  2. Pastikan Performance Monitoring SDK tidak dinonaktifkan melalui flag berikut:

    • performance.instrumentationEnabled
  3. Pastikan bahwa caching browser Anda dinonaktifkan. Jika tidak, browser mungkin tidak menangkap setelan instrumentasi baru.

  4. 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.

  5. Jika Anda tidak dapat menemukan apa pun yang dinonaktifkan di aplikasi Anda, hubungi Dukungan Firebase.

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.

Jika Anda tidak melihat pesan log untuk peristiwa performa, coba langkah pemecahan masalah berikut:

  1. Pastikan Performance Monitoring SDK sudah benar diinisialisasi di aplikasi Anda.

  2. Pastikan Performance Monitoring SDK tidak dinonaktifkan melalui flag berikut:

    • performance.instrumentationEnabled
  3. Pastikan bahwa caching browser Anda dinonaktifkan. Jika tidak, browser mungkin tidak menangkap setelan instrumentasi baru.

  4. 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.

  5. Jika Anda tidak dapat menemukan apa pun yang dinonaktifkan di aplikasi Anda, hubungi Dukungan Firebase.

Jika data untuk metrik penundaan input pertama tidak muncul, cobalah langkah pemecahan masalah berikut:

  1. Perlu diketahui bahwa Performance Monitoring hanya mencatat metrik penundaan input pertama saat pengguna mengklik halaman web dalam 5 detik pertama setelah halaman dimuat.

  2. 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 agar Performance Monitoring dapat melaporkan metrik aplikasi web lainnya.

Apakah Anda melihat data performa untuk trace yang dikumpulkan secara otomatis, tetapi tidak untuk trace kode kustom? Coba langkah-langkah pemecahan masalah berikut:

  1. 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.

  2. Pastikan bahwa pengumpulan data Performance Monitoring tidak dinonaktifkan melalui flag berikut:

    • performance.dataCollectionEnabled

      Flag ini mengontrol pengumpulan data hanya untuk trace kode kustom (bukan semua data).

  3. Periksa pesan log Anda untuk memastikan bahwa Performance Monitoring mencatat log trace kode kustom yang diharapkan.

  4. Jika Performance Monitoring mencatat peristiwa ke dalam log, tetapi tidak ada data yang ditampilkan setelah 24 jam, hubungi Dukungan Firebase.

Jika data permintaan jaringan tidak muncul, perhatikan hal-hal berikut:

  • Performance Monitoring otomatis mengumpulkan metrik 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.

Pelajari lebih lanjut cara Performance Monitoring menggabungkan data permintaan jaringan berdasarkan pola URL.

Anda juga dapat mencoba pola URL kustom.

FAQ

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.

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.

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.

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 trace kode dan trace permintaan jaringan dalam jumlah terbatas 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.

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.

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).

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 saat ini dalam Performance Monitoring SDK.

Jika Performance Monitoring adalah satu-satunya produk Firebase di aplikasi Anda, Anda dapat menggunakan 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 menyertakan Performance Monitoring SDK mandiri ke dalam aplikasi Anda dan menunda inisialisasinya hingga setelah halaman dimuat:

  1. Tambahkan skrip berikut ke header file indeks Anda.
  2. 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/11.3.1/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.

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/11.3.1/firebase-performance-standalone.js'
  • firebaseConfig adalah objek konfigurasi Firebase aplikasi Anda

Tampilan dan pemrosesan data 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.

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.

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.

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.

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 Project settings.