Amazon Managed Service for Apache Flink は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
パフォーマンスのベストプラクティスを使用する
このセクションでは、パフォーマンスを考慮したアプリケーションの設計に関する特別な考慮事項について説明します。
スケーリングを適切に管理する
このセクションには、アプリケーションレベルとオペレーターレベルのスケーリングの管理に関する情報が含まれています。
このセクションは、以下のトピックで構成されます。
アプリケーションのスケーリングの適切な管理
自動スケーリングを使用すると、アプリケーションアクティビティの予期しない急増に対処できます。次の条件を満たすとKPUs、アプリケーションの は自動的に増加します。
アプリケーションの自動スケーリングが有効になっている。
CPU 使用量は 15 分間 75% を超えます。
自動スケーリングが有効になっていても、CPU使用量がこのしきい値にとどまらない場合、アプリケーションは をスケールアップしませんKPUs。このしきい値を満たさないCPU使用量の急増、または などの別の使用量メトリクスの急増が発生した場合はheapMemoryUtilization
、アプリケーションがアクティビティの急増を処理できるように手動でスケーリングを増やしてください。
注記
アプリケーションが自動スケーリングによってリソースを自動的に追加した場合、アプリケーションはしばらくアクティブになっていないときに新しいリソースを解放します。リソースをダウンスケーリングすると、一時的にパフォーマンスに影響します。
(スケーリングの詳細については、 アプリケーションのスケーリングを実装する を参照してください。)
オペレータースケーリングの適切な管理
アプリケーションのワークロードがワーカープロセスに均等に分散されていることと、アプリケーション内のオペレーターが安定してパフォーマンスを発揮するために必要なシステムリソースを持っていることを確認することで、アプリケーションのパフォーマンスを向上させることができます。
parallelism
設定を使用して、アプリケーションのコード内の各オペレータの並列度を設定できます。オペレータに並列度を設定しない場合、アプリケーションレベルの並列度設定が使用されます。アプリケーションレベルの並列度設定を使用するオペレータは、アプリケーションで使用可能なすべてのシステムリソースを消費し、アプリケーションが不安定になる可能性があります。
各オペレータの並列度を最も適切に判断するには、アプリケーション内の他のオペレータと比較したオペレータの相対的なリソース要件を考慮します。リソースを大量に消費するオペレータには、リソースをあまり消費しないオペレータよりも高いオペレータ並列度を設定します。
アプリケーションのオペレータ並列度の合計は、アプリケーション内のすべてのオペレータの並列度の合計です。アプリケーションで使用可能なタスクスロットの合計との最適な比率を決定して、アプリケーションのオペレータ並列度全体を調整します。オペレータの総並列度とタスクタイムスロットの一般的な安定比は 4:1 です。つまり、アプリケーションが使用可能なオペレータサブタスクの4つごとに1つのタスクタイムスロットがあります。リソースを大量に消費するオペレータを使用するアプリケーションには 3:1 または 2:1 の比率が必要ですが、リソース集約度の低いオペレータを使用するアプリケーションでは 10:1 の比率で安定している場合があります。
オペレータの比率は ランタイムプロパティを使用する を使用して設定できるため、アプリケーションコードをコンパイルしてアップロードしなくてもオペレータの並列度を調整できます。
以下のコード例は、オペレータの並列度を現在のアプリケーションの並列度に対する調整可能な比率として設定する方法を示しています。
Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties(); operatorParallelism = StreamExecutionEnvironment.getParallelism() / Integer.getInteger( applicationProperties.get("OperatorProperties").getProperty("MyOperatorParallelismRatio") );
サブタスク、タスクスロット、その他のアプリケーションリソースについては、 Managed Service for Apache Flink アプリケーションリソースを確認する を参照してください。
アプリケーションのワーカープロセス全体にわたるワークロードの分散を制御するには、Parallelism
設定と KeyBy
パーティションメソッドを使用します。詳細については、「Apache Flink ドキュメント
外部依存リソースの使用状況を監視します。
送信先 (Kinesis Streams、Firehose、DynamoDB、 OpenSearch Service など) にパフォーマンスのボトルネックがある場合、アプリケーションにはバックプレッシャーが発生します。外部依存関係がアプリケーションのスループットに合わせて適切にプロビジョニングされていることを確認します。
注記
他のサービスに障害が発生すると、アプリケーションに障害が発生する可能性があります。アプリケーションで障害が発生した場合は、障害がないか送信先サービスの CloudWatch ログを確認してください。
Apache Flink アプリケーションをローカルで実行します。
メモリ問題をトラブルシューティングするには、アプリケーションをローカルの Flink インストールで実行できます。これにより、Apache Flink 用 Managed Service でアプリケーションを実行しているときには使用できないスタックトレースやヒープダンプなどのデバッグツールにアクセスできるようになります。
ローカル Flink インストールの作成については、Apache Flink ドキュメントの「スタンドアロン