Praktik terbaik 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.

Praktik terbaik kinerja

Bagian ini menjelaskan pertimbangan khusus guna mendesain aplikasi untuk performa.

Mengelola penskalaan dengan benar

Bagian ini berisi informasi tentang mengelola penskalaan tingkat aplikasi dan tingkat operator.

Kelola penskalaan aplikasi dengan benar

Anda dapat menggunakan penskalaan otomatis untuk menangani lonjakan tidak terduga dalam aktivitas aplikasi. KPU aplikasi Anda akan meningkat secara otomatis jika kriteria berikut terpenuhi:

  • Penskalaan otomatis diaktifkan untuk aplikasi.

  • Penggunaan CPU tetap di atas 75 persen selama 15 menit.

Jika penskalaan otomatis diaktifkan, tetapi penggunaan CPU tidak berada di ambang ini, aplikasi tidak akan meningkatkan skala CPU. Jika Anda mengalami lonjakan penggunaan CPU yang tidak memenuhi ambang ini, atau lonjakan metrik penggunaan yang berbeda seperti heapMemoryUtilization, tingkatkan penskalaan secara manual agar aplikasi Anda dapat menangani lonjakan aktivitas.

catatan

Jika aplikasi secara otomatis menambahkan lebih banyak sumber daya melalui penskalaan otomatis, aplikasi akan merilis sumber daya baru setelah periode tidak aktif. Penurunan skala sumber daya akan memengaruhi performa untuk sementara.

Untuk informasi selengkapnya tentang penskalaan, lihat Penskalaan.

Kelola penskalaan operator dengan benar

Anda dapat meningkatkan performa aplikasi Anda dengan memastikan beban kerja aplikasi Anda didistribusikan secara merata di antara proses pekerja, dan operator dalam aplikasi Anda memiliki sumber daya sistem yang mereka perlukan agar stabil dan berfungsi.

Anda dapat mengatur paralelisme untuk setiap operator dalam kode aplikasi Anda menggunakan pengaturan parallelism. Jika Anda tidak mengatur paralelisme untuk operator, pengaturan paralelisme tingkat aplikasi akan digunakan. Operator yang menggunakan pengaturan paralelisme tingkat aplikasi berpotensi menggunakan semua sumber daya sistem yang tersedia untuk aplikasi, membuat aplikasi tidak stabil.

Untuk menentukan paralelisme terbaik untuk setiap operator, pertimbangkan persyaratan sumber daya relatif operator yang dibandingkan dengan operator lain dalam aplikasi. Atur operator yang lebih intensif sumber daya untuk pengaturan paralelisme operator yang lebih tinggi dari operator yang kurang intensif sumber daya.

Total paralelisme operator untuk aplikasi adalah jumlah paralelisme untuk semua operator dalam aplikasi. Anda menyetel total paralelisme operator untuk aplikasi Anda dengan menentukan rasio terbaik di antaranya dan total slot tugas yang tersedia untuk aplikasi Anda. Rasio stabil khas dari total paralelisme operator untuk slot tugas adalah 4:1, yaitu, aplikasi memiliki satu slot tugas yang tersedia untuk setiap empat subtugas operator yang tersedia. Aplikasi dengan operator yang lebih intensif sumber daya mungkin memerlukan rasio 3:1 atau 2:1, sementara aplikasi dengan operator yang kurang intensif sumber daya mungkin stabil dengan rasio 10:1.

Anda dapat mengatur rasio untuk operator menggunakan Properti runtime, sehingga Anda dapat menyetel paralelisme operator tanpa menyusun dan mengunggah kode aplikasi Anda.

Contoh kode berikut mendemonstrasikan cara mengatur paralelisme operator sebagai rasio yang dapat disetel dari paralelisme aplikasi saat ini:

Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties(); operatorParallelism = StreamExecutionEnvironment.getParallelism() / Integer.getInteger( applicationProperties.get("OperatorProperties").getProperty("MyOperatorParallelismRatio") );

Untuk informasi tentang subtugas, slot tugas, dan sumber daya aplikasi lainnya, lihat Sumber daya aplikasi.

Untuk mengontrol distribusi beban kerja di seluruh proses pekerja aplikasi Anda, gunakan pengaturan Parallelism dan metode partisi KeyBy. Untuk informasi selengkapnya, lihat topik berikut di Dokumentasi Apache Flink:

Pantau penggunaan sumber daya dependensi eksternal

Jika ada hambatan kinerja di suatu tujuan (seperti Kinesis Streams, Firehose, DynamoDB atau Service), aplikasi Anda akan mengalami tekanan balik. OpenSearch Pastikan dependensi eksternal Anda disediakan dengan benar untuk throughput aplikasi Anda.

catatan

Kegagalan dalam layanan lainnya dapat menyebabkan kegagalan dalam aplikasi Anda. Jika Anda melihat kegagalan dalam aplikasi Anda, periksa CloudWatch log untuk layanan tujuan Anda untuk kegagalan.

Jalankan aplikasi Apache Flink Anda secara lokal

Untuk memecahkan masalah memori, Anda dapat menjalankan aplikasi Anda dalam instalasi Flink lokal. Ini akan memberi Anda akses ke alat debugging seperti stack trace dan heap dump yang tidak tersedia saat menjalankan aplikasi Anda di Managed Service for Apache Flink.

Untuk informasi tentang membuat instalasi Flink lokal, lihat Mandiri di Dokumentasi Apache Flink.