Event Hubs スループットユニットの見積もり、監視方法
質問
Event Hubs Standard レベルの名前空間の使用を想定しています。
スループットユニット数の見積もり方法、および実際にスループットユニット数が十分か監視する方法を教えてください。
回答
以下のドキュメントに記載の内容より、見積もる形になります。
1 つのスループット ユニットにより、次のことが可能になります。
- イングレス: 1 秒あたり最大で 1 MB または 1,000 イベント (どちらか先に到達した方)
- エグレス: 1 秒あたり最大で 2 MB または 4,096 イベント
例えば、毎秒 5 MB で 2,000 イベントを Event Hubs が受信 (イングレス) する場合は、
以下の計算から、5 スループットユニットが必要となります。
イベント数だけを考慮すると、2 スループットユニットで十分ですが、スループットの制限により少なくとも 5 スループットユニット必要となります。
- 5 MB / 1 (MB/スループットユニット) = 5
- 2,000 イベント / 1,000 (イベント/スループットユニット) = 2
また、上記のイングレスに対して、
Event Hubs のイベントを 3 つのサービスでほぼリアルタイムで受信するとして、毎秒 5 MB * 3 = 15 MB および、2,000 * 3 = 6,000 イベントのエグレスがあるとすると、以下の計算により、スループットの制限を満たすために少なくとも 8 スループットユニットが必要と見積もることが可能でございます。
- 15 MB / 2 (MB/スループットユニット) = 7.5
- 6,000 イベント / 4,096 (イベント/スループットユニット) = 1.46…
イングレスとエグレスの想定から、少なくとも 8 スループットユニットが必要と存じます。
一方でイベント数とスループットが不明な場合もあると存じます。また、設定したスループットユニット数が適切か監視する必要もあると存じます。
その場合は、実際に Event Hubs にイベントを送受信する環境を構築いただき、Event Hubs の対応する以下のメトリックの実測値を参考に、必要なスループットユニット数を見積もるもしくは監視することが可能でございます。
各メトリックは 1 分当たりの値となりますので、メトリック値より秒単位の平均の値を算出した上で、 スループットユニットの制限に達するかご確認いただく形になります。
スループットユニット制限 | 確認するメトリックの名前 | メトリックの説明 |
---|---|---|
イングレス: 1 秒あたり最大で 1,000 イベント |
受信メッセージ (Incoming Messages) |
指定された期間にわたって Event Hubs に送信されたイベントまたはメッセージの数。 |
エグレス: 1 秒あたり最大で 4,096 イベント |
送信メッセージ (Outgoing Messages) |
指定された期間にわたって Event Hubs から受信されたイベントまたはメッセージの数。 |
イングレス: 1 秒あたり最大で 1 MB |
着信バイト数 (Incoming Bytes) |
指定した期間にわたるイベント ハブの受信バイト数。 |
エグレス: 1 秒あたり最大で 2 MB |
発信バイト数 (Outgoing Bytes) |
指定した期間にわたるイベント ハブの送信バイト数。 |
メトリックの詳細については、ドキュメント メッセージのメトリック をご確認ください。
例えば、以下の通り「受信メッセージ (Incoming Messages)」のメトリックが計上されているとします。
メトリックは分単位で計上されるため、5/15 15:16 時点では 1 分間に、61,800 イベントを受信しています。
秒単位の平均値を出すと、 61,800 / 60 (秒) = 1,030 となり、1 スループットユニットのイベント数の制限 (1,000) を超えているため、スロットリングの例外が発生する可能性があります。
実際に、「調整された要求数 (Throttled Requests)」メトリックの値を確認すると、同じ時間帯に 1 以上の値が計上されており、
スループットユニットの制限を超過しており、スループットユニット数の増加が必要と判断できます。
調整された要求数についての詳細は、ドキュメント 要求のメトリック をご確認ください。
また、注意する点としては、あくまでスループットユニットの制限は秒単位でのものであり、
ある特定の 1 秒間のみ大量のイベントを受信し、残りの 59 秒間はイベントを受信しなかった場合ですと、上記 送信/受信メッセージ、および着信/発信バイト数メトリックの確認のみでは、スループットユニットの制限を超過したか判断ができない可能性もあります。
したがって、実際にスループットユニットの制限を超過したか、「調整された要求数 (Throttled Requests)」メトリックも併せて監視いただくことをご検討いただけますと幸いです。
最後に、Event Hubs Standard レベルをご利用の場合は、自動インフレ機能がございます。
以下のドキュメントに記載があります通り、お客様のご利用状況に応じて、スループットユニット数を自動で増やすことができ、スループットユニット超過による調整エラーを未然に防ぐことが可能ですので、Event Hubs のイベントが今後増えることが見込まれる場合は検討いただけますと幸いです。
自動インフレ機能の詳細については、ドキュメント Azure Event Hubs のスループット ユニットを自動的にスケールアップする (Standard レベル) をご確認ください。
Event Hubs の自動インフレ機能は、使用量のニーズに合わせてスループット単位の数を増やすことで、自動的にスケールアップします。 スループット単位を増やすことで、以下の状況で必要になる調整シナリオを防ぐことができます。
- データの受信レートが、設定されたスループット単位を超えている。
- データの送信要求レートが、設定されたスループット単位を超えている。
参考ドキュメント
- Event Hubs によるスケーリング
- Azure Event Hubs データの監視のリファレンス
- Azure Event Hubs のスループット ユニットを自動的にスケールアップする (Standard レベル)
2023 年 5 月 15 日時点の内容となります。
本記事の内容は予告なく変更される場合がございますので予めご了承ください。