2013-06-07 18 views
41

How is Amazon DynamoDB throughput calculated and limited?」に対する回答では、1秒あたりのプロビジョニングされたスループットを超えるたびにDynamoDBがリクエストを抑制することが示唆されています。しかし、これは私の経験と矛盾しています。DynamoDBはいつスロットル要求を出しますか?

私は複数の行をポストする表を持っています。多くの場合、行の数はプロビジョニングされた書き込み容量を超えています。これは短いバーストで起こります。ある時点では、プロビジョニングされた容量よりも平均で5分も平均しています。 OTOH、平均15分は容量を下回っています。私はその時代には抑制された要求を持っていません。うまくプロビジョニング容量以下 5 minutes average

15分平均のピーク:6のプロビジョニングされた容量を持つ8.053で

5分平均のピーク

enter image description here

だから、ときDynamoDBのスロットル要求していますか?それはどのような平均を考慮に入れますか?バーストが抑制される前に、プロビジョニングされた容量を上回ると、どのくらい高いことができますか?

答えて

54

DynamoDBは、プロビジョニングされた容量を1秒単位で確実に利用できるように設計されています。 1秒あたり10kB読み込みのテーブルをプロビジョニングすると、DynamoDBはそのスループットレートを処理するのに十分な容量を提供します。さらに、DynamoDBでは、プロビジョニングされたスループットよりも短時間に制限されたバーストを達成できる場合があります。これは、顧客ワークロードの自然な変動を吸収するためのものです。この破裂は保証されておらず、いつでも利用できるとは限りません(利用可能なバーストの性質は時間とともに変化する可能性があります)。ベスト・プラクティスのドキュメントに記載されているように、最高のパフォーマンスを得るには、プロビジョニングされた容量を超えないように均等に分散されたワークロードを用意し、キー・スペース全体に均等に負荷を分散する必要があります。ただし、アプリケーションの生産動作の現実が均等に分散されたワークロードから逸脱すると、DynamoDBはバーストの一部を吸収する可能性があります。

テーブルをどれだけプロビジョニングするかは、作業負荷によって大きく異なります。あなたはピークの80%のようなものにプロビジョニングしてから、受信したスロットルの数(CloudWatchグラフに表示される)と再試行によって引き起こされるレイテンシに対するアプリケーションの耐性によって、テーブルの容量を調整できます。 DynamoDBでは、プロビジョニングされた容量を超えて無制限のバーストを許可しません。短いバーストを吸収することは可能かもしれませんが、プロビジョニングされた容量レベルを超えるスループットレートを長期間維持することはできません。私たちが与えることができる一般的なガイダンスは、あなたのピークに近いものを準備し、スロットルを見ながらダイヤルすることです。

This answer was posted in AWS forums

免責事項:私はアマゾン、DynamoDBのチームのために働きます。

+2

ピークが80%の場合、* 5分の平均*グラフのピークを参照していますか?言い換えれば、10秒ごとに60個のバッチがある状況があるとしましょう。 1秒あたりのベースでは、60分、1分あたり、またはそれ以上です。6.ピークはどれくらいですか? – vartec

+0

「ピークはどれくらいですか?」私はあなたにそれを教えてくれるとは思わない、ごめんなさい。すべての計算/アカウンティングは1秒ごとに実行されます。バーストトラフィックの場合、トラフィックパターンを分析するのに時間がかかると考えられます。最後に、ポストに示されているように、あなたの使用パターンと再試行/抑制の許容範囲を知っているので、最良の行動措置は少しの試行錯誤です。 –

+1

私自身の開発テストでは、1書き込み単位のテーブルを用意していましたが、1秒間に10回の書き込みを抑制することなく一貫して読み込めるので、@vartecは自分の経験と一貫しています。 –

11

は、作品を破裂方法を説明しhint in the DynamoDB documentationあります:

あなたは完全にパーティションのスループットを利用していない、DynamoDBのスループットの使用状況の後のバーストのためのあなたの未使用容量の一部を保持します。 DynamoDBは、現在、未使用の読み取りおよび書き込み容量を5分(300秒)保持します。

しかし、それはまた、あなたがこの動作に頼ることができないことを言う:DynamoDBの缶と利用バーストを行います。それはすべての回で利用可能バースト能力に依存するようにアプリケーションを設計していない、しかし

事前の通知なしにバックグラウンドのメンテナンスなどの作業を行うことができます。

少なくとも、プロビジョニングされた容量を5分以上上回ることができた理由を説明します。上記の説明では、プロビジョニングされた容量を上回るように15分の平均(またはそれ以上のタイム・パン)を設定することも可能です。間隔の最初にスパイクがあり、開始前の300秒以内に使用量が少ない場合間隔。

関連する問題