Anda dapat melihat kinerja penyebaran yang sedang berjalan, termasuk penggunaan CPU, memori, dan thread dari JobManager serta TaskManager yang aktif. Informasi ini membantu Anda mengidentifikasi masalah pada tingkat kode, seperti inisialisasi kelas yang lambat atau kelas yang mengonsumsi sumber daya secara berlebihan.
Prasyarat
Jika Anda berbagi ruang kerja dengan akun Alibaba Cloud atau Pengguna RAM lainnya, Anda harus memberikan izin yang diperlukan agar mereka dapat melihat kinerja penyebaran. Untuk informasi selengkapnya, lihat otorisasi Konsol pengembangan.
Batasan
-
Fitur tampilan kinerja penyebaran hanya didukung untuk penyebaran yang berjalan di Ververica Runtime (VVR) 4.0.11 atau versi yang lebih baru.
-
Fitur ini hanya tersedia untuk penyebaran yang sedang berjalan. Anda tidak dapat melihat kinerja penyebaran historis.
Penggunaan tool analisis
Flame Graph
Karena Flame Graph dihasilkan dari sampel, grafik tersebut mungkin tidak mencerminkan seluruh eksekusi program. Selalu gunakan bersama alat analisis lainnya dan sesuaikan analisis Anda dengan kasus penggunaan spesifik Anda. Biasanya, Anda dapat memeriksa aspek-aspek berikut:
-
Waktu CPU: Fungsi yang menempati area lebih lebar di bagian atas grafik biasanya mengonsumsi lebih banyak waktu CPU, yang mengindikasikan potensi masalah kinerja.
-
Alokasi memori: Lihat memori yang dialokasikan oleh kelas-kelas berbeda.
-
Lock contention: Periksa adanya degradasi kinerja yang disebabkan oleh lock contention atau deadlock.
-
ITimer: Lihat konsumsi CPU di seluruh thread dalam interval waktu yang sama.
Pada tab Running TaskManagers penyebaran target, klik TaskManager target, lalu pilih tab Debug. Di sini, Anda dapat memilih jenis Flame Graph, mengatur interval sampling, dan mengklik Query untuk menghasilkan grafik.
-
Pahami struktur Flame Graph
Tiap lapisan dalam Flame Graph merepresentasikan satu level dalam tumpukan panggilan. Lapisan paling bawah adalah titik masuk aplikasi, sedangkan lapisan yang lebih tinggi merepresentasikan pemanggilan fungsi yang lebih dalam.
-
Fokus pada lebar dan frekuensi frame
Dalam Flame Graph, lebar tiap frame merepresentasikan persentase waktu eksekusi yang digunakan fungsi selama sampling. Frame yang lebih lebar menunjukkan konsumsi CPU yang lebih tinggi dan potensi bottleneck. Frame yang sering muncul, meskipun tidak paling lebar, menunjukkan fungsi yang dipanggil berkali-kali, yang juga dapat menyebabkan masalah kinerja kumulatif.
-
Analisis posisi frame
Posisi vertikal suatu frame menunjukkan level dalam tumpukan panggilan tempat bottleneck terjadi. Frame lebar di bagian bawah biasanya mengindikasikan masalah pada tahap awal program atau logika utama, sedangkan frame lebar di bagian atas mungkin mengarah pada fungsi pemrosesan atau fungsi library tertentu.
-
Analisis dalam konteks kode Anda
Setelah mengidentifikasi potensi bottleneck dalam Flame Graph, analisis kode yang sesuai. Cari peluang optimasi pada fungsi-fungsi hot spot tersebut, seperti mengurangi iterasi loop, meningkatkan struktur data, atau meminimalkan sinkronisasi.
-
Jalankan pengujian kinerja
Setelah mengoptimalkan kode, jalankan pengujian kinerja untuk memverifikasi peningkatan. Bandingkan Flame Graph sebelum dan sesudah perubahan Anda untuk memastikan bottleneck telah terselesaikan.
Jika bagian-bagian Flame Graph ditampilkan sebagai "UnKnown", hal ini mengindikasikan penggunaan metode native, di mana nama metode Java tidak diharapkan muncul. Untuk informasi selengkapnya, lihat Unknown.
Threads
-
Buka tab Debug.
-
Kinerja JobManager
Pada tab Logs, klik tab JobManager, lalu klik Debug.
-
Kinerja Running TaskManagers
Pada tab Logs, klik tab Running TaskManagers, klik nilai pada kolom Path, ID, lalu klik Debug.
-
-
Pada tab Threads, temukan operator target dan klik Sample pada kolom Actions. Setelah periode sampling, amati stack thread-nya. Sebagai contoh, berikut adalah stack thread untuk akses Gemini State.
Kotak dialog Single Thread Sampling menampilkan hasilnya, termasuk grafik garis penggunaan CPU dan tabel sampel stack. Di sini, Anda dapat melihat tumpukan panggilan metode, seperti
java.lang.Object.wait, pada tiap titik sampling. Klik Pause Sampling untuk menghentikan pengumpulan data.
Thread Dump
-
Pada tab Logs, klik tab Running TaskManagers, lalu klik nilai pada kolom Path, ID.
-
Pada tab Thread Dump, cari berdasarkan nama operator dan amati stack thread untuk melihat apakah thread tersebut mengakses state. Stack yang secara konsisten menunjukkan pemanggilan di jalur akses Gemini atau RocksDB mengindikasikan hal tersebut.
Untuk menemukan nama operator yang akan digunakan pada tab Thread Dump, buka halaman detail TaskManager target. Anda dapat menemukan nama operator target pada tab Status.
Panel Detail di sebelah kanan menampilkan rencana eksekusi untuk tiap operator, menyediakan nama seperti
TableSourceScan,Calc, danSinkuntuk pencarian Thread Dump Anda.
Dokumen terkait
-
Layanan diagnostik penyebaran cerdas membantu Anda memantau kesehatan penyebaran dan memastikan stabilitas serta keandalan bisnis Anda. Untuk informasi selengkapnya, lihat diagnostik penyebaran cerdas.
-
Anda dapat meningkatkan kinerja penyebaran Flink SQL dengan mengoptimalkan konfigurasi dan kueri. Untuk informasi selengkapnya, lihat Teknik optimasi Flink SQL berkinerja tinggi.