Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerFlex Gateway新着情報
Governance新着情報
Monitoring API Manager2.x
Mule 4
3.9
1.1
2.x
1.2
7.x
back-pressure と maxConcurrency
back-pressure と maxConcurrency
負荷が大きい場合、Mule Runtime Engine (Mule) が特定のイベントを処理するために使用可能なリソースがないことがあります。この問題は、すべてのスレッドが使用中で現在のフローの同時実行数を超えている場合に発生します。この場合、Mule は次のメッセージをログに記録します。
Flow 'flowName' is unable to accept new events at this time
(フロー「flowName」は、現在新しいイベントを受け付けられません)。
このメッセージはバックプレッシャーと呼ばれます。Mule のバックプレッシャーアクションは、各コネクタの取得元に固有です。
コンシューマーコンポーネントが情報を処理できるレートより、プロデューサーコンポーネントが情報を出力するレートの方が高い場合は、maxConcurrency
パラメーターを使用して、コンポーネントが内部または外部であるか、フローまたはソースであるか、などに応じて、フローが同時に処理できるメッセージの最大数を設定します。
Mule ではバックプレッシャーを独自に適用していますが、maxConcurrency
パラメーターを使用することで、特に同時実行数が増える原因がバックエンドサーバーにある場合に、フローのパフォーマンスを制御できます。次の例にパラメーターの設定方法を示します。
<flow name="perf-test-flow" maxConcurrency="${flow.max.concurrency}">
xml
同様に、maxConcurrency
パラメーターを次のように使用することで、バッチジョブで処理できるレコード数を制限できます。
<batch:job jobName="test-batch" maxConcurrency="${batch.max.concurrency}">
xml
デフォルトでは、Flow スコープと Async スコープでは maxConcurrency
の制限は設定されていませんが、Batch Job コンポーネントでは使用できるコア数の 2 倍に同時実行数が制限されています。同時実行数は、システムのキャパシティによっても制限されます。
次の『コンポーネント』には最大同時実行の設定があります。
Flow スコープ
Scatter-Gather ルーター
Async スコープ
Batch Job スコープ
Parallel For Each スコープ
同時実行を減らしてバックプレッシャーイベントを人為的にトリガーする必要がある場合を除き、デフォルト設定を使用してください。また、最大同時実行値を変更しないでください。