VM/ベアメタルの Runtime Fabric でのリソース割り当てとパフォーマンス

Mule アプリケーションを Anypoint Runtime Fabric にデプロイする前に、適切な割り当てリソース数を決定します。リソース割り当ての決定は、Anypoint Runtime Fabric で内部ロードバランサーを設定するときにも重要です。

Mule アプリケーションが Runtime Fabric にデプロイされるときに、そのアプリケーションは独自の Mule Runtime Engine (Mule) と共にデプロイされます。レプリカの数、またはそのアプリケーションとランタイムのインスタンスも指定されます。各レプリカに使用できるリソースは、アプリケーションのデプロイ時に設定した値によって決まります。

このトピックで提供されるパフォーマンス情報は、AWS EC2 M4 インスタンスを使用するコントローラーノードが含まれる Runtime Fabric クラスターに基づきます。クラスターは、3 個の m4.large コントローラーノードと 3 個の r4.large ワーカーノードを使用して設定されています。M4 インスタンスは EC2 専用に最適化されたカスタム Intel Xeon E5-2676 v3 Haswell プロセッサーを搭載しています。プロセッサーは 2.4 GHz のベースクロックレートで実行され、Intel Turbo Boost を使用すると 3.0 GHz まで上昇します。使用される負荷ジェネレーターは、同じリージョンの別の AWS インスタンスでホストされます。

アプリケーションのデプロイ時に次のリソースを割り当てることができます。

  • vCPU コア

    • Reserved vCPU

      アプリケーションに対して保証されていて、アプリケーションで使用するために予約されている vCPU の数。

    • vCPU Limit

      アプリケーションで使用できる vCPU の最大数 (アプリケーションでバーストできるレベル)。これは、ワーカーノードで共有される CPU です。

  • Memory (メモリ)

MuleSoft ライセンスコンプライアンス

お客様は、常に MuleSoft のライセンス規約に準拠する必要があります。準拠の条件は以下のいずれかになります。

  1. 各 Mule アプリケーションレプリカに割り当てられている CPU 制限の合計がライセンスされている合計数量以下である。

  2. Mule アプリケーションを実行している Runtime Fabric ワーカーノードによって提供されている合計 CPU 容量がライセンスされている数量以下である。

使用状況を監視して、使用量がライセンス量を超えた場合にアラートを受け取る方法は、 MuleSoft ナレッジベースの「Cronjob Script to Monitor RTF Appliance CPU of Mule Apps (Mule アプリケーションの RTF アプライアンス CPU を監視するための Cronjob スクリプト)」​を参照してください。

vCPU の割り当て

[​Reserved vCPU​ (予約済み vCPU)] と [​vCPU Limit​ (vCPU 制限)] が等しい場合、保証されたモデルでワーカーノードの CPU が割り当てられます。コンテナでは、常に指定された数の CPU を使用できます。vCPU は、アプリケーションの各レプリカ用に予約されており、Runtime Fabric で他に何が実行されていても保証されます。

CPU の割り当てが保証されていると、他のアプリケーションとの CPU 競合がなくなり、アプリケーションの実行の一貫性が確保されます。すべてのケースでパフォーマンスが保証されます。

[​vCPU Limit​ (vCPU 制限)] の値が [​Reserved vCPU​ (予約済み vCPU)] の値よりも高く設定されていると、アプリケーションは、[vCPU limit (vCPU 制限)] の値またはワーカーノードの予約されていない vCPU の数のいずれか少ない方までバーストできます。

ワーカーノードに必要な CPU とメモリを見積もる場合、Anypoint Monitoring エージェントには Anypoint Monitoring 用に 0.05 以上の vCPU コアと 50 Mi 以上のメモリが必要です。このコンテナは、アプリケーションメトリクスをコントロールプレーンにストリーミングするために使用され、無効にできません。これらのコアとメモリの割り当ては Mule のライセンスには使用されません。

CPU バースト

CPU バーストを使用するときは、次の要素を考慮する必要があります。

  • 最小予約済み vCPU: 0.02 vCPU。

  • vCPU の下限: 0.07 vCPU。

    大量のリソースを消費するアプリケーションでは、CPU 容量の追加が必要になる場合があります。アプリケーションデプロイメントで vCPU 下限量を使用していない場合は、vCPU 下限値を大きくしてからアプリケーションを再デプロイしてください。

  • CPU 制限の上限は、ワーカーノードで提供される CPU コアによって決まります。

  • 簡単なアプリケーションおよび API ゲートウェイの CPU コアごとの使用数は最大 20 ~ 25 個にすることをお勧めします。使用量の大きいより複雑なアプリケーションでは、より多くの容量が必要になる場合があります。

  • Runtime Fabric では、ワーカーノードで少数のサービスが実行されます。これらのサービスは、Anypoint Monitoring でログ転送が有効になっているかどうかに応じて 0.3 ~ 0.5 vCPU をコンシュームします。

  • 各アプリケーションのレプリカでは、Anypoint Monitoring を実行するコンテナ用に 50m の CPU と 50Mi のメモリを予約する必要があります。このコンテナは、アプリケーションメトリクスをコントロールプレーンにストリーミングするため、無効にできません。

  • アプリケーションは、ワーカーノードの残りの未割り当て CPU を求めて競合します。ワーカーノードにデプロイされているアプリケーションが多いほど、他のアプリケーションと共有できる未割り当て CPU が少なくなり、パフォーマンスが低下する可能性があります。アプリケーションとの CPU 競合を最小限に抑えるために、次の戦略を検討してください。

    • 日中に負荷がピークになる他のアプリケーションと共に夜間パッチアプリケーションをデプロイします。

    • アプリケーションの複数のレプリカをデプロイし、ワーカーノードで分散されるようにして、未割り当て CPU の表面積を最大化します。

      どのアプローチを選択する場合でも、テストを実行してパフォーマンスを検証します。

メモリの割り当て

Mule アプリケーションまたは API ゲートウェイの各レプリカに割り当てられるメモリの量の最小値は、次のとおりです。

  • 0.7 GB メモリ (Mule 4)

  • 0.5 GB メモリ (Mule 3)

Anypoint Monitoring を有効化すると、Anypoint Monitoring サイドバーコンテナ用に 50MB のメモリが予約され、デプロイされた各アプリケーションがメトリクスを処理する際に最大 70MB を消費します。

CloudHub および Runtime Fabric のメモリ割り当ての計算

Anypoint Platform は、デプロイされたアプリケーションにネイティブメモリとヒープメモリを割り当てます。ヒープメモリは、Mule Runtime とアプリケーションで使用可能な合計メモリの一部です。ヒープメモリはペイロードの処理などのタスクに使用されます。

CloudHub と Anypoint Runtime Fabric とも、両方の種別のメモリを割り当てます。ただし、各メモリ種別のメモリ割り当てが計算される方法は異なります。

  • Runtime Fabric は、アプリケーションで使用可能な合計メモリを表示する。
    使用可能なヒープメモリは、アプリケーションに割り当てられる合計メモリの約半分です。

  • CloudHub は、アプリケーションで使用可能なヒープメモリの観点から最小メモリ要件を表す。

アプリケーションの起動時間

Mule アプリケーションの起動時間は、そのアプリケーションがアクセスできる vCPU コアの総数と相関しています。次の表では、ペイロードで処理を実行する単純な Mule プロキシアプリケーションのおおよその起動時間を示しています。

vCPU コア おおよその起動時間

1.00

1 分未満

0.50

2 分未満

0.10

6 ~ 8 分

0.07

10 ~ 14 分

アプリケーションのパフォーマンス

Mule アプリケーションに割り当てられたリソースによって、アプリケーションのパフォーマンスが決まります。次の表では、10-KB ペイロードで簡単な処理を実行する 1 つの Mule アプリケーションに割り当てられた vCPU コアの総数に基づく、スループットのおおよその値を次に示します。

vCPU コア 同時接続 平均応答時間 (ミリ秒)

1.00

10

15

0.50

5

15

0.10

1

25

0.07

1

78

Mule アプリケーションでパフォーマンステストと負荷テストを実行し、割り当てるリソースの数を決定します。

内部ロードバランサーのメモリの割り当て

内部ロードバランサーのメモリ要件は、スレッド数、応答時間のレイテンシー、およびメッセージサイズの影響を受けます。メモリを割り当てる場合は次のガイドラインを使用してください。

  • .5 GB (デフォルト): アクティブな同時接続数が 500 件未満の場合。

  • 1.5 GB (大): 次のいずれかまたは両方のシナリオの場合。

    • アクティブな同時接続数が 500 件以上。

    • セキュリティポリシーが有効になっている。

これは一般的なガイドラインであり、個々の環境で調整が必要になる場合があります。

内部ロードバランサー

インバウンドトラフィックは、Anypoint Runtime Fabric によって管理される内部ロードバランサーを使用して処理されます。このロードバランサーは TLS の終了を担当するため、必要なリソースの数は受信接続の数と各要求の平均ペイロードサイズに基づいて調整されます。

パフォーマンステストの結果は、AWS EC2 M4 インスタンスを使用するコントローラーノードが含まれる Runtime Fabric クラスターに基づきます。クラスターは、3 個の m4.large コントローラーノードと 3 個の r4.large ワーカーノードを使用して設定されています。パフォーマンステストで使用された負荷ジェネレーターは、同じリージョンの別の AWS インスタンスでホストされました。M4 インスタンスは EC2 専用に最適化されたカスタム Intel Xeon E5-2676 v3 Haswell プロセッサーを搭載しており、2.4 GHz のベースクロックレートで実行されました。Intel Turbo Boost を使用すると、クロックレートが 3.0 GHz まで上昇しました。

SSL 接続の効率がより高い C++ ベースの負荷ジェネレーターを使用して、最大のスループットを実現しました。

次の表には、CPU コアの数に基づいて、内部ロードバランサーの 1 つのレプリカで処理できるおおよその要求数 (平均 10 KB) がまとめられています。ほとんどの場合、Elliptical Curve Digital Signature Algorithm (ECDSA) のパフォーマンスは、2K RSA キーの 2 倍になります。サポートされている曲線は、secp521r1 (P-521)、secp384r1 (P-384)、secp256r1 (prime256v1 (P-256) とも呼ばれる) です。

Key Type (キー種別) CPU TLS (接続の再利用なし) TLS (接続の再利用あり)

RSA 2K

0.25

94 メッセージ/秒

1100 メッセージ/秒

RSA 2K

0.5

189 メッセージ/秒

2250 メッセージ/秒

RSA 2K

1

380 メッセージ/秒

4000 メッセージ/秒

RSA 4K*

0.25

14 メッセージ/秒

1048 メッセージ/秒

RSA 4K*

0.5

30 メッセージ/秒

2087 メッセージ/秒

RSA 4K*

1

59 メッセージ/秒

3700 メッセージ/秒

ECDSA P-256

0.25

234 メッセージ/秒

1150 メッセージ/秒

ECDSA P-256

0.5

451 メッセージ/秒

2257 メッセージ/秒

ECDSA P-256

1

860 メッセージ/秒

4100 メッセージ/秒

*RSA キーの長さを 2 倍にすると、パフォーマンスが 6 倍以上低下します。

内部ロードバランサーは、Runtime Fabric のコントローラー VM で実行されます。インバウンドトラフィックの量と種別に基づいて、VM のサイズを設定します。内部ロードバランサーに割り当てることができるのは、各 VM で使用可能な CPU コアの半分のみです。

キーと証明書の CPU 要件

最小 10 個の PEM/P12 または 8 個の JKS/JCEKS 証明書をサポートするのに十分な CPU リソースを割り当てていることを確認します。推奨されるコアの数は次のとおりです。

コア PEM/P12 JKS/JCEKS

0.25

8

2

0.5

10

4

0.75

10

6

<= 1

10

8

キー種別

RSA キーは最も一般的なキー種別です。2K の長さの RSA キーは、セキュリティとパフォーマンスの最適なバランスを実現します。

2K よりも長い RSA キーは、ブルートフォースクラッキングを防ぎ、有効期限が何年もある証明書に適しています。ただし、2k から 4k のようにキーの長さが 2 倍になると、パフォーマンスが 6 倍以上低下します。

ECDSA キーもサポートされています。ほとんどの場合、ECDSA のパフォーマンスは、2K RSA キーの 2 倍になります。サポートされている曲線は、次のとおりです。

  • secp521r1 (P-521)

  • secp384r1 (P-384)

  • secp256r1 (prime256v1 (P-256) とも呼ばれる)