2016-07-16 12 views
1

現在、Node.jsのDynamoDBを処理するために、ライブラリdynamooseを使用しています。私は明示的な要求が1000 + msを何とか取っている理由についていくつかのテストを行っていて、ピンにはダイナモ・コードの機能を指摘しています。スキャンや保存を行うときには、それらの要求ごとに約240msかかる。だから、もし私が1つの機能でそれらのうちのいくつかをやらなければならない場合、それは長くなることがあります。Amazon WebサービスDynamoDBのリクエストが遅い

AWSによれば、私はプロビジョニングされた読み書き容量の下ではかなり遠いです。 Read and Write capacity

私のテーブルの1つは、10-40msのスキャンとレイテンシを示しています。どちらが悪くはないようですが、やはりやや高いようです(全く正常です)。

Put and Scan latency

私のDB要求が240msを取ることはありませんので、このすべての速度を改善する方法上の任意のアイデア?

答えて

1

スキャンはテーブル内のすべてをフェッチします。だからテーブルの大きさによっては、すべてを持ち込むのに時間がかかることがあります。

ここで表示されるスキャン待ち時間は、サーバー上で1回のスキャン要求(ネットワークまたはクライアントの待ち時間を考慮していません)です。あなたは通常、複数のスキャン要求を実行し、テーブル内のすべてをつかむために

(1メガバイトIIRCを戻って来ることができ、データのサイズの上限がある)

あなたはキープアライブを持っている場合にも見て、確認する必要があります(つまり、接続を再利用しているのか、新しいプラグインを開いているのか)、AWS Regionからどのくらい離れているかを考慮してください(EC2インスタンスのコードをあなたが使用しているDDBは、ネットワークレイテンシにペナルティがあります)。

+0

現在、私はテーブルの中に1つのものしか持っていません。ネットワークの待ち時間が問題になる可能性があります。私はローカルコンピュータを使用しており、COにあり、DynamoDBはオレゴン地域にあります。だから挑戦的に問題になる可能性があります。私がdynamooseを使用しているのでerror2007に言ったように、それはそのキープアライブ機能を実装する場所を見つけるためのちょっとした手間になります。だから私はノードパッケージを編集し、そのコードがどこにあるのかを見つける簡単な方法を見つけなければならないでしょう。あなたの助けをありがとうtho。 –

1

デフォルトでは、keepAliveはノードで有効になっていません。これを有効にすると、既存のソケットが再利用されるので処理が速くなります。このオプションをテストしてもよろしいですか?これを行うには、次のオプションを使用してDynamoDBクライアントをインスタンス化します。

var dynamo = new AWS.DynamoDB({ 
    region: "ap-southeast-2", 
    httpOptions: { 
    agent: new https.Agent({ 
     rejectUnauthorized: true, 
     keepAlive: true 
    }) 
    } 
}); 
+0

私はこれに取り組もうとしています。スーパーハード私はこれらの要求を処理するためにダイナモを使用しているので、私は彼らのコードに移動し、それらのコードを持っていることを把握し、それを更新する必要があります。私はそれがどこにあるかを知ることができます。 –

+0

aws-sdkにhttpoptionsを追加する方法 – Prabhas

関連する問題