All Products
Search
Document Center

Realtime Compute for Apache Flink:Pantau kinerja penerapan

Last Updated:Mar 01, 2026

Realtime Compute for Apache Flink menyediakan alat profiling bawaan yang membantu Anda mendiagnosis hambatan kinerja pada penerapan yang sedang berjalan di tingkat JVM. Gunakan flame graph untuk mengidentifikasi hot spot CPU, periksa alokasi memori di seluruh ruang JVM, dan analisis perilaku thread melalui pengambilan sampel dan thread dump.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Izin tingkat namespace untuk Realtime Compute for Apache Flink yang diberikan ke Akun Alibaba Cloud atau pengguna Resource Access Management (RAM) Anda. Untuk detailnya, lihat Berikan izin namespace.

Batasan

  • Hanya Ververica Runtime (VVR) versi 4.0.11 atau lebih baru yang mendukung pemantauan kinerja penerapan.

  • Data kinerja hanya tersedia untuk penerapan yang sedang berjalan. Data penerapan historis tidak disimpan.

Pilih tool

Mulailah dengan alat yang sesuai dengan gejala yang sedang Anda selidiki.

GejalaToolYang ditampilkan
Penggunaan CPU tinggi atau throughput lambatFlame GraphMetode yang intensif CPU dan tumpukan panggilannya
Dugaan tekanan memoriFlame Graph (mode Alloc) atau MemoryAlokasi memori berdasarkan fungsi, atau penggunaan memori JVM berdasarkan ruang
Kontensi thread atau dugaan deadlockFlame Graph (mode Lock) atau ThreadsPola kontensi lock, atau jejak stack per thread melalui pengambilan sampel
Perlu snapshot lengkap dari semua status threadThread DumpSemua stack thread pada satu titik waktu

Akses tool kinerja

  1. Masuk ke Konsol Realtime Compute for Apache Flink.

  2. Temukan ruang kerja dan klik Console di kolom Actions.

  3. Di panel navigasi sebelah kiri, pilih O&M > Deployments.

  4. Klik nama penerapan, lalu klik tab Logs.

  5. Akses alat kinerja sebagai berikut:

    • Flame Graph, Memory, atau Threads: Klik tab Job Manager atau Running Task Managers, lalu klik Debug.

    • Thread Dump: Klik tab Running Task Managers, lalu klik nilai di kolom Path, ID.

Flame Graph

Flame graph memvisualisasikan tumpukan panggilan sebagai batang horizontal berlapis. Setiap batang merepresentasikan sebuah frame stack: lapisan paling bawah adalah titik masuk aplikasi, dan lapisan yang lebih atas merepresentasikan panggilan fungsi yang lebih dalam. Batang yang lebih lebar menunjukkan waktu CPU yang lebih banyak dikonsumsi oleh fungsi tersebut, sehingga menjadi indikator utama hambatan kinerja.

Untuk latar belakang konsep flame graph, lihat Flame Graphs dalam dokumentasi Apache Flink.

Mode flame graph

ModeYang ditangkap
CPUJejak stack dari thread yang sedang aktif berjalan. Frame yang lebih lebar menunjukkan penggunaan CPU yang lebih tinggi.
AllocMemori yang dialokasikan oleh setiap fungsi. Mengidentifikasi fungsi yang memberikan tekanan heap paling besar.
LockKontensi lock dan pola deadlock. Menyoroti fungsi yang menunggu untuk mendapatkan lock.
ITimerKonsumsi CPU di seluruh thread dalam interval pengambilan sampel. Mirip dengan mode CPU tetapi tidak memerlukan dukungan perf_events.

Identifikasi hambatan kinerja dengan flame graph

Flame graph example
  1. Cari frame yang lebar. Frame yang lebar berarti fungsi terkait mengonsumsi bagian signifikan dari waktu CPU dibandingkan fungsi lain. Ini merupakan indikator paling umum dari hot spot.

  2. Periksa frekuensi frame. Frame stack yang muncul berulang kali di berbagai sampel menunjukkan fungsi yang sering dipanggil, yang dapat menyebabkan degradasi kinerja kumulatif.

  3. Interpretasikan posisi vertikal. Frame lebar di dekat bagian bawah grafik menunjukkan adanya masalah di jalur utama aplikasi atau kode titik masuk. Frame lebar di dekat bagian atas menunjukkan adanya masalah dalam fungsi tertentu yang berada jauh di dalam tumpukan panggilan.

  4. Optimalkan hot spot tersebut. Setelah mengidentifikasi fungsi bermasalah, tinjau kode terkait. Optimasi umum mencakup pengurangan iterasi loop, peningkatan struktur data, dan minimalisasi operasi sinkronisasi.

  5. Bandingkan sebelum dan sesudah. Setelah menerapkan optimasi, hasilkan flame graph baru dan bandingkan dengan flame graph sebelumnya untuk memverifikasi bahwa hambatan telah terselesaikan.

Catatan

Flame graph dihasilkan dari data sampel dan mungkin tidak menangkap konteks eksekusi secara lengkap. Untuk diagnosis yang lebih akurat, gunakan flame graph bersama alat kinerja lain yang dijelaskan dalam topik ini. Fungsi non-Java muncul sebagai "unknown" dalam flame graph. Untuk detailnya, lihat diskusi async-profiler.

Memory

Tab Memory menampilkan penggunaan memori di berbagai ruang JVM (heap, non-heap, metaspace, dan lainnya). Gunakan tampilan ini untuk mengidentifikasi kebocoran memori, pengumpulan sampah berlebihan, atau ruang JVM yang mendekati batasnya.

Threads

Pengambilan sampel thread menangkap jejak stack dari thread individual dalam rentang waktu tertentu, membantu Anda memahami apa yang dilakukan setiap thread selama terjadi masalah kinerja.

Ambil sampel thread

Akses tab Debug untuk komponen yang ingin diperiksa:

  • JobManager: Di tab Logs, klik tab Job Manager, lalu klik Debug.

  • TaskManager: Di tab Logs, klik tab Running Task Managers, klik nilai di kolom Path, ID, lalu klik Debug.

Di tab Threads, temukan operator yang ingin diperiksa dan klik Sample di kolom Actions. Tunggu hingga proses pengambilan sampel selesai, lalu tinjau stack thread.

Thread sampling example

Contoh ini menunjukkan stack thread yang diakses oleh Gemini State.

Thread Dump

Thread dump menangkap status setiap thread pada satu titik waktu. Gunakan thread dump untuk mendeteksi deadlock, mengidentifikasi thread yang terblokir, atau memverifikasi interaksi backend status.

Ambil thread dump

  1. Di tab Logs, klik tab Running Task Managers, lalu klik nilai di kolom Path, ID.

  2. Klik tab Thread Dump.

  3. Cari nama operator yang memproses data status. Periksa apakah stack thread yang berisi interaksi GeminiStateBackend atau RocksDBStateBackend ditampilkan di bawah operator tersebut.

Thread dump example
Catatan

Temukan nama operator di tab Status.

Operator name on Status tab

Referensi