全部产品
Search
文档中心

Realtime Compute for Apache Flink:Kontrol ukuran status untuk mengurangi tekanan balik menggunakan Datastream API

更新时间:Jul 02, 2025

Manajemen status memengaruhi performa, stabilitas, dan pemanfaatan sumber daya. Manajemen yang tidak tepat dapat menyebabkan sistem crash. Datastream API memungkinkan pengelolaan ukuran status secara fleksibel. Topik ini menjelaskan cara mengontrol ukuran status pada deployment yang dibangun dengan Datastream API.

Informasi latar belakang

Apache Flink mendukung dua jenis status: operator state dan keyed state. Penggunaan keyed state lebih cenderung menghasilkan ukuran status yang besar. Untuk mengatasi masalah ini, Anda dapat menggunakan DataStream API, seperti antarmuka ValueState, ListState, dan MapState, untuk mengelola keyed state. Anda juga dapat mengonfigurasi waktu hidup status (TTL) agar data status kadaluwarsa. Untuk informasi lebih lanjut, lihat Menggunakan Keyed State.

Alat diagnostik

Tekanan balik adalah indikator hambatan performa dalam Apache Flink. Dalam banyak kasus, tekanan balik terjadi karena ukuran status terus bertambah dan melebihi memori yang dialokasikan. Dalam situasi ini, backend status memindahkan data jarang digunakan ke penyimpanan disk. Namun, akses ke disk jauh lebih lambat daripada akses ke memori. Jika operator sering membaca data dari disk, latensi akan meningkat secara signifikan, mengakibatkan hambatan performa.

Untuk mengidentifikasi apakah tekanan balik disebabkan oleh ukuran status yang besar, analisis status operasi deployment dan operator secara menyeluruh. Gunakan pemantauan dan alat diagnostik untuk mengidentifikasi serta menyelesaikan masalah performa akibat akses status.

Tabel berikut menjelaskan alat diagnostik pada konsol pengembangan Realtime Compute for Apache Flink. Alat-alat ini dapat digunakan bersama fitur diagnostik penyebaran cerdas dan penyetelan otomatis untuk memfasilitasi penyetelan performa deployment berstatus besar.

Alat

Deskripsi

Penggunaan

Thread dumps

Periksa apakah utas operator utamanya mengakses data status pada waktu saat ini.

Lihat Pemantauan performa penyebaran.

Aktivitas thread

Periksa apakah utas operator utamanya mengakses data status selama periode tertentu.

Grafik flame

Periksa apakah sebagian besar waktu CPU digunakan untuk mengakses data status dalam periode tertentu.

Pemantauan metrik runtime

Lihat metrik terkait untuk memeriksa ukuran status dan overhead I/O.

Klik deployment yang ingin Anda lihat di halaman Deployments, klik tab Status, lalu klik Metrics di bagian Actions.

image

Anda dapat melihat metrik berikut:

  • Ukuran Status: ukuran status setiap subtask. Metrik ini hanya tersedia jika Anda menggunakan GeminiStateBackend.

  • LastCheckPointFullSize: ukuran penuh checkpoint terbaru. Metrik ini membantu Anda memperkirakan ukuran status keseluruhan deployment.

  • Metrik terkait latensi akses status: Jika salah satu metrik ini mencapai level milidetik, performa mungkin dibatasi oleh akses status. Untuk informasi lebih lanjut, lihat Status.

Metode penyetelan

Evaluasi ulang desain aplikasi Anda

Desain penyimpanan dan manajemen status dalam aplikasi sangat penting. Untuk mencegah pertumbuhan status tak terbatas, simpan hanya informasi yang diperlukan di status.

Konfigurasikan TTL untuk mengurangi ukuran status

Apache Flink menyediakan metode untuk membantu Anda mengelola siklus hidup data status. Misalnya, panggil metode setTTL() dari antarmuka ValueStateDescriptor untuk membuat dan membersihkan data status yang kedaluwarsa secara otomatis. Anda juga dapat memanggil metode clear() dan remove() untuk menghapus data status yang tidak lagi diperlukan, sehingga membantu mengontrol ukuran status.

Gunakan timer untuk pembersihan status

Anda dapat menggunakan timer untuk memicu pembersihan status secara berkala. Ini memastikan bahwa data status yang kedaluwarsa dihapus tepat waktu dan mencegah pertumbuhan status tak terbatas. Selain itu, Anda dapat mengelola siklus hidup data status secara halus.

Pantau performa, hasilkan log, dan analisis file status

Pantau metrik performa terkait ukuran status dan backend status untuk mendeteksi anomali secara tepat waktu. Hasilkan log rinci untuk memfasilitasi pemecahan masalah. Secara rutin analisis file status historis untuk mengidentifikasi pola dan risiko potensial, lalu gunakan informasi tersebut untuk mengoptimalkan manajemen status.

Minimalkan pembacaan disk

Kurangi jumlah pembacaan disk dan optimalkan alokasi memori untuk meningkatkan performa sistem.

  • Optimalkan Alokasi Memori

    Alokasikan lebih banyak sumber daya ke memori terkelola tanpa memengaruhi total sumber daya sistem. Ini meningkatkan pemanfaatan memori secara efektif, sehingga mengurangi akses ke disk. Sebelum menggunakan metode ini, pastikan bahwa sumber daya memori cukup untuk bagian lain dari sistem.

  • Tambahkan Sumber Daya Memori

    Tambahkan sumber daya memori dan alokasikan lebih banyak memori terkelola ke mesin penyimpanan status. Ini meningkatkan pemanfaatan memori dan mengurangi akses ke disk. Anda dapat menggunakan metode ini dalam mode ahli konfigurasi sumber daya untuk mencapai alokasi sumber daya halus dan performa optimal.

  • Tingkatkan Paralelisme

    Paralelisme yang lebih tinggi menghasilkan ukuran status yang lebih kecil untuk setiap subtask, sehingga mengurangi jumlah data yang ditulis ke disk. Metode ini secara efektif mengurangi operasi I/O disk dan meningkatkan efisiensi pemrosesan data.

Tabel berikut menjelaskan cara menggunakan metode di atas dalam skenario berbeda.

Skenario

Metode

Operasi

Perhatian

Sumber daya memori lainnya, seperti memori heap, cukup

Alokasikan lebih banyak sumber daya ke memori terkelola.

Konfigurasikan parameter taskmanager.memory.managed.fraction. Nilai defaultnya adalah 0.4. Nilai yang lebih besar menentukan proporsi memori terkelola yang lebih besar untuk penyimpanan status. Untuk informasi lebih lanjut, lihat Konfigurasi Memori dan Bagaimana cara mengonfigurasi parameter untuk deployment yang sedang berjalan?

Pastikan bahwa sumber daya memori lainnya cukup. Jika tidak, pengumpulan sampah penuh (Full GC) mungkin sering terjadi, yang menurunkan performa.

Semua skenario

Tambahkan sumber daya memori.

Lihat Konfigurasikan Sumber Daya untuk Deployment.

Tidak ada

Tingkatkan paralelisme.

Referensi