Flex Gateway新着情報
Governance新着情報
Monitoring API Manager負荷が大きい場合、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}">
同様に、maxConcurrency
パラメーターを次のように使用することで、バッチジョブで処理できるレコード数を制限できます。
<batch:job jobName="test-batch" maxConcurrency="${batch.max.concurrency}">
デフォルトでは、Flow スコープと Async スコープでは maxConcurrency
の制限は設定されていませんが、Batch Job コンポーネントでは使用できるコア数の 2 倍に同時実行数が制限されています。同時実行数は、システムのキャパシティによっても制限されます。
次のコンポーネントには最大同時実行の設定があります。
Flow スコープ
Scatter-Gather ルーター
Async スコープ
Batch Job スコープ
Parallel For Each スコープ