web-dev-qa-db-ja.com

AWS DynamoDBから10ミリ秒未満の応答時間を取得するにはどうすればよいですか?

DynamoDBのドキュメントやインターネット上の多くの場所で、1桁のミリ秒の応答時間が一般的であることがわかりましたが、最も単純なセットアップでもそれを達成できないようです。 us-west-2でt2.microec2インスタンスとDynamoDBテーブルを設定しました。ec2インスタンスでawscliから以下のコマンドを実行すると、平均で約250ミリ秒の応答が返されます。私のローカルマシン(デンバー)から実行された同じコマンドの平均は約700ミリ秒です。

aws dynamodb get-item --table-name my-table --key file://key.json

AWSコンソールでCloudWatchメトリックスを見ると、平均取得レイテンシーは12ミリ秒であると言われています。誰かが私が間違っていることを教えてくれるか、私が自分でこれを解決できる情報の方向に私を向けることができれば、私は本当に感謝しています。前もって感謝します。

6
bschnelle

表示されている応答時間は、主にawscliのコールドスタート時間に関係しています。 get-itemコマンドを実行するときは、CLIをメモリにロードし、一時的な認証情報をフェッチして(t2.microインスタンスで実行するときにec2 iamロールを使用する場合)、DynamoDBサービスへの安全な接続を確立する必要があります。それがすべて完了すると、get-itemリクエストが実行され、最後に結果がstdoutに出力されます。このコマンドでは、ファイルシステムからkey.jsonファイルを読み取る必要もあり、オーバーヘッドが追加されます。

T2.microインスタンスで実行した私の経験では、aws cliの開始時に約200ミリ秒のオーバーヘッドがあります。これは、表示されている内容と一致しているようです。

長時間実行されるプログラムでは、開始時に同様のオーバーヘッド価格しか支払わないため、これは問題にはなりません。 DynamoDBで動作するt2.microインスタンスで多数のWebサービスを実行していますが、DynamoDBの応答時間は一貫して20ミリ秒未満です。

17
Ryan Fitzgerald

REST API呼び出しを行うときに表示されるレイテンシーには多くの要因があります。DynamoDBは1桁のミリ秒でレイテンシーを提供できますが、いくつかの注意点と実行できることがあります待ち時間を最小限に抑えます。

最初に考慮すべきことは、光の距離と速度です。同じリージョンにあるEC2インスタンスを使用している場合、DynamoDBにアクセスするときに最高のレイテンシーが得られると期待してください。ラップトップまたは別のデータセンターからDynamoDBにアクセスすると、待ち時間が長くなるのが普通です。各地域には複数のデータセンターもあることに注意してください。

使用しているハードウェア、ネットワーク接続、プログラミング言語に基づいて、クライアント側からのパフォーマンスコストも発生します。ミリ秒のレイテンシーについて話しているときは、マシンの処理時間が違いを生む可能性があります。

遅延のもう1つの考えられる原因は、TLSハンドシェイクです。暗号化された接続を確立するには、暗号化されたチャネルを確立するために、両側で複数のラウンドトリップと計算が必要です。ただし、接続にキープアライブを使用している限り、最初のクエリに対してのみこの耳にしたものを支払うことになります。連続するクエリは、この最初のペナルティが発生しないため、大幅に高速になります。残念ながら、AWS CLIはリクエスト間の接続を維持しませんが、ほとんどの言語のAWSSDKがこれを自動的に管理します。


もう1つの重要な考慮事項は、DynamoDBがWebコンソールで報告するレイテンシーが平均であるということです。 DynamoDBは信頼性の高いaverage 2桁の低いレイテンシーを提供しますが、最大レイテンシーは通常、数百ミリ秒以上になります。これは、CloudWatchで最大レイテンシーを表示することで確認できます。

5
JaredHatfield

彼らは最近、DAX(プレビュー)を発表しました。 Amazon DynamoDB Accelerator(DAX)は、DynamoDB用のフルマネージドで高可用性のインメモリキャッシュであり、1秒あたり数百万のリクエストでも、ミリ秒からマイクロ秒まで最大10倍のパフォーマンス向上を実現します。詳細については、 DAX(プレビュー)を使用したインメモリアクセラレーション を参照してください。

3
izelrea