Memecahkan masalah kinerja - Layanan Terkelola untuk Apache Flink

Amazon Managed Service untuk Apache Flink sebelumnya dikenal sebagai Amazon Kinesis Data Analytics untuk Apache Flink.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah kinerja

Bagian ini berisi daftar gejala yang dapat Anda periksa untuk mendiagnosis dan memperbaiki masalah performa.

Jika sumber data Anda adalah aliran Kinesis, masalah performa biasanya muncul sebagai metrik millisbehindLatest yang tinggi atau meningkat. Untuk sumber lainnya, Anda dapat memeriksa metrik serupa yang mewakili jeda dalam membaca dari sumbernya.

Memahami jalur data

Saat menyelidiki masalah performa dengan aplikasi Anda, pertimbangkan seluruh jalur yang dilalui data Anda. Komponen aplikasi berikut dapat menjadi hambatan performa dan membuat tekanan balik jika komponen tidak didesain atau ditetapkan dengan benar:

  • Sumber data dan tujuan: Pastikan sumber daya eksternal yang berinteraksi dengan aplikasi Anda adalah properti yang disediakan untuk throughput yang akan dialami aplikasi Anda.

  • Data status: Pastikan aplikasi Anda tidak terlalu sering berinteraksi dengan penyimpanan status.

    Anda dapat mengoptimalkan serializer yang digunakan aplikasi Anda. Serializer Kryo default dapat menangani jenis serializable apa pun, tetapi Anda dapat menggunakan serializer yang lebih berkinerja jika aplikasi Anda hanya menyimpan data dalam tipe. POJO Untuk informasi tentang serializer Apache Flink, lihat Jenis Data & Serialisasi dalam dokumentasi Apache Flink.

  • Operator: Pastikan logika bisnis yang diterapkan oleh operator Anda tidak terlalu rumit, atau Anda tidak membuat atau menggunakan sumber daya dengan setiap catatan yang diproses. Juga pastikan aplikasi Anda tidak terlalu sering membuat jendela geser atau tumbling.

Solusi pemecahan masalah kinerja

Bagian ini berisi solusi potensial untuk masalah performa.

CloudWatch tingkat pemantauan

Verifikasi bahwa Tingkat CloudWatch Pemantauan tidak disetel ke pengaturan yang terlalu bertele-tele.

Pengaturan Tingkat Log Pemantauan Debug menghasilkan sejumlah besar lalu lintas, yang dapat membuat tekanan balik. Anda hanya harus menggunakannya saat secara aktif menyelidiki masalah dengan aplikasi.

Jika aplikasi Anda memiliki pengaturan Parallelism tinggi, menggunakan Tingkat Metrik Pemantauan Parallelism juga akan menghasilkan sejumlah besar lalu lintas yang dapat menyebabkan tekanan balik. Gunakan hanya tingkat metrik ini saat Parallelism untuk aplikasi Anda rendah, atau saat menyelidiki masalah dengan aplikasi.

Untuk informasi selengkapnya, lihat Kontrol tingkat pemantauan aplikasi.

CPUMetrik aplikasi

Periksa metrik CPU aplikasi. Jika metrik ini di atas 75 persen, Anda dapat mengizinkan aplikasi mengalokasikan lebih banyak sumber daya untuk dirinya sendiri dengan mengaktifkan penskalaan otomatis.

Jika penskalaan otomatis diaktifkan, aplikasi mengalokasikan lebih banyak sumber daya jika CPU penggunaan lebih dari 75 persen selama 15 menit. Untuk informasi tentang penskalaan, lihat bagian Mengelola penskalaan dengan benar berikut, dan Menerapkan penskalaan aplikasi di Managed Service untuk Apache Flink.

catatan

Aplikasi hanya akan menskalakan secara otomatis sebagai respons terhadap CPU penggunaan. Aplikasi tidak akan menskalakan otomatis saat merespons metrik sistem lain, seperti heapMemoryUtilization. Jika aplikasi Anda memiliki tingkat penggunaan tinggi untuk metrik lain, tingkatkan paralelisme aplikasi Anda secara manual.

Paralelisme aplikasi

Tingkatkan paralelisme aplikasi. Anda memperbarui paralelisme aplikasi menggunakan ParallelismConfigurationUpdate parameter tindakan. UpdateApplication

Maksimum KPUs untuk aplikasi adalah 64 secara default, dan dapat ditingkatkan dengan meminta peningkatan batas.

Ini juga penting untuk menetapkan paralelisme ke setiap operator berdasarkan beban kerjanya, bukan hanya meningkatkan paralelisme aplikasi itu sendiri. Lihat Paralelisme operator berikut.

Pencatatan aplikasi

Periksa apakah aplikasi mencatat entri untuk setiap catatan yang diproses. Menulis entri log untuk setiap catatan pada saat aplikasi memiliki throughput yang tinggi akan menyebabkan hambatan parah dalam pemrosesan data. Untuk memeriksa kondisi ini, kueri log Anda untuk entri log yang ditulis aplikasi Anda dengan setiap catatan yang diproses. Untuk informasi selengkapnya tentang membaca log aplikasi, lihat Menganalisis log dengan Wawasan CloudWatch Log.

Paralelisme operator

Pastikan beban kerja aplikasi Anda didistribusikan secara merata di antara proses pekerja.

Untuk informasi tentang menyetel beban kerja operator aplikasi Anda, lihat Penskalaan operator.

Logika aplikasi

Periksa logika aplikasi Anda untuk operasi yang tidak efisien atau yang tidak berfungsi, seperti mengakses dependensi eksternal (seperti basis data atau layanan web), mengakses status aplikasi, dll. Dependensi eksternal juga dapat menghambat performa jika tidak berfungsi atau tidak dapat diakses dengan andal, yang dapat menyebabkan dependensi eksternal yang menampilkan kesalahan HTTP 500.

Jika aplikasi Anda menggunakan dependensi eksternal untuk memperkaya atau memproses data yang masuk, pertimbangkan untuk menggunakan IO asinkron sebagai gantinya. Untuk informasi selengkapnya, lihat I/O Asinkron di Dokumentasi Apache Flink.

Memori aplikasi

Periksa aplikasi Anda untuk kebocoran sumber daya. Jika aplikasi Anda tidak membuang utas atau memori dengan benar, Anda mungkin melihat metrik millisbehindLatest, CheckpointSize, dan CheckpointDuration yang meningkat atau meningkat secara bertahap. Kondisi ini juga dapat menyebabkan kegagalan manajer tugas atau manajer pekerjaan.