1. ホーム
  2. amazon-web-services

[解決済み] AWS DynamoDBから10ms以下のレスポンスタイムを得るには?

2022-02-25 18:37:42

質問

DynamoDBのドキュメントやインターネット上の多くの場所で、1桁の応答時間が典型的であると見ましたが、最も簡単な設定でもそれを達成することができないようです。 t2.microのec2インスタンスとDynamoDBのテーブルをus-west-2に設定し、aws cliからec2インスタンスで以下のコマンドを実行すると、平均250ms程度のレスポンスが得られました。 同じコマンドを私のローカルマシン(Denver)から実行すると、平均で約700msになります。

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

AWSコンソールでCloudWatchのメトリクスを見ると、平均取得レイテンシは12msと書いてあるのですが。 もし誰かが、私が間違っていることを教えてくれるか、私が自分でこれを解決できる情報の方向を示してくれるなら、私は本当に感謝します。 ありがとうございました。

解決方法を教えてください。

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

私の経験では、aws cliの起動時に200ms程度のオーバーヘッドがあり、これはあなたが見ているものと同じようなものだと思います。

長時間稼働するプログラムでは、起動時に同様のオーバーヘッド料金を支払うだけなので、これは問題にはなりません。私はDynamoDBと連携するt2.microインスタンスで多くのウェブサービスを実行していますが、DynamoDBの応答時間は一貫して20ms以下となっています。