2017-02-01 2 views
1

내 문제는 DynamoDB가 단일 개체를 반환하는 데 꽤 오랜 시간이 걸리고 있다는 것입니다. node.js와 AWS docclient를 사용하고 있습니다. 기이 한 일은 DB에서 단일 항목을 "선택"하는 데 100ms에서 200ms가 걸린다는 것입니다. 어쨌든 더 빨리 만들 수 있습니까?DynamoDB 느린 응답

Exampel 코드 : 람다 코드의 간단한 조각에 대한

var AWS = require("aws-sdk"); 
var docClient = new AWS.DynamoDB.DocumentClient(); 
console.time("user get"); 
var params = { 
     TableName : 'User', 
     Key: { 
     "id": "2f34rf23-4523452-345234" 
     } 
    }; 

    docClient.get(params, function(err, data) { 
     if (err) { 
      callback(err); 
     } 
     else {    
      console.timeEnd("user get"); 
     } 
    }); 

그리고 평균 130ms 동안이다. 어떤 아이디어라도 빨리 만들려면 어떻게해야합니까? 사용자 테이블에는 기본 파티션 키 "id"만 있고 글로벌 보조 인덱스에는 기본 키 전자 메일이 있습니다. 내 콘솔에서이 작업을 시도 할 때 더 많은 시간이 걸립니다.

도움이 될 것입니다.

+0

DDB 테이블의 위치와 동일한 지역의 코드를 실행하고 있습니까? –

+0

예 모두 같은 지역에 있습니다. – gabrjan

답변

1

warmed up your Lambda function이 있습니까? 임시로드 만 실행하고 연속로드를 실행하지 않는 경우 컨테이너에서 실행중인 function might not be available yet이므로 추가 시간이 소요될 수 있습니다. 이 이론을 지원하거나 반박하는 한 가지 방법은 GetItem API의 대기 시간 메트릭을 살펴 보는 것입니다. 마지막으로 AWS X-Ray을 사용하여 스택의 대기 시간을 확인할 수 있습니다.

DynamoDB SDK는 또한 람다 (Lambda) 기능에서 감지 된 대기 시간에 추가하여 재 시도 할 수 있습니다. 항목이 약 10KB라고 가정하면 조절할 수 있습니다. 충분한 읽기 용량을 제공 했습니까? 테이블에 대한 DynamoDB 콘솔에서 읽기 대기 시간 및 읽기 제한 메트릭을 확인할 수 있습니다.

+0

그럼 10 회 연속으로 모든 기능을 실행해도 결과는 같습니다. – gabrjan

+0

상품의 크기는 얼마나됩니까? 일반적으로 작은 항목 (1kb 미만)을 읽는 데 약 10-15ms 대기 시간이 표시되고 람다 JS 실행 시간에는 또 다른 10-15ms가 표시됩니다. –

+0

아마도 내 항목이 꽤 큽니까? 모든 항목은 근사 적으로 10k 자이며 크기는 10Kb입니다. Btw. ProjectionExpression을 추가하더라도 : "id"는 모든 것을 빠르게하지 않습니다. – gabrjan