내 dynamodb 요청이 boto : get_item을 통해 너무 느리고 너무 자주 느린 이유는 무엇입니까? AWS 콘솔은 대기 시간이 12.5ms를 넘었 음을보고합니다. 내 요청 중 어느 것도 그 근처에 있지 않습니다.왜 boto dynamodb2 get_item 속도가 일관성이없고 겉으로보기에는 자주 끔찍한가요?
from boto.dynamodb2.fields import HashKey
from boto.dynamodb2.table import Table
from boto.dynamodb2.types import STRING
import boto.dynamodb2
import time
REGION = "us-west-1"
AWS_KEY = "xxxxx"
AWS_SECRET = "xxxxx"
start = time.time()
peeps = ("cefbdadf518f44da8a68e35b2321bb1f", "7e3a691df6134a4f83d381a5507cbb18")
connection = boto.dynamodb2.connect_to_region(REGION, aws_access_key_id=AWS_KEY, aws_secret_access_key=AWS_SECRET)
users = Table("users-test", schema=[HashKey("id", data_type=STRING)], connection=connection)
for peep in peeps:
user = users.get_item(consistent=True, id=peep)
print time.time() - start
결과 :
(botot)➜ ~ python test2.py
0.056941986084
0.0681240558624
(botot)➜ ~ python test2.py
1.05709600449
1.06937909126
(botot)➜ ~ python test2.py
0.048614025116
0.0575139522552
(botot)➜ ~ python test2.py
0.0553398132324
0.064425945282
(botot)➜ ~ python test2.py
3.05251288414
3.06584000587
(botot)➜ ~ python test2.py
0.0579640865326
0.0699849128723
(botot)➜ ~ python test2.py
0.0530469417572
0.0628390312195
(botot)➜ ~ python test2.py
1.05059504509
1.05963993073
(botot)➜ ~ python test2.py
1.05139684677
1.0603158474
파이썬 2.7.5 AWS 지역 미국 서부-1 2.31.1 DynamoDB의 테이블 크기 ~ 180K 기록
코드 BOTO 업데이트 2014-07-11 08:03 PST 실제 유스 케이스는 각 웹 요청에 대해 사용자를 찾고 있습니다. @ gamaat에 따르면 DynamoDB의 비용은 HTTPS 연결이 이루어지기 때문에 첫 번째 조회에 있습니다. 따라서 요청간에 DynamoDB 연결을 저장하고 재사용 할 수 있다면 상황이 더 빨라질 것입니다. 그래서 werkzeug.contrib.cache.FileSystemCache를 사용하여 연결을 저장했지만 실제로 검색을 위해 연결을 저장하는 것처럼 보이지는 않습니다. 다른 값은이 연결 객체가 아니라 잘 저장됩니다. 어떤 아이디어? 그리고 이것이 요청 간의 연결을 저장하는 좋은 방법이 아니라면 무엇입니까?
갱신 2014년 7월 11일 태평양 표준시 15시 30분 내가 관리자를 사용하고 있는데 uwsgi 내 플라스크 응용 프로그램을 관리 할 수 있기 때문에, 문제가 내 플라스크에 대한 요청 사이의 연결 개체를 공유 할 수있는 방법 실제로 것 같다 앱. 이 일을하는 것이 었습니다
테스트에는 서비스에 대한 HTTPS 연결을 만드는 데 소요되는 시간 (실제로는 일회성 비용)이 포함됩니다. 또한 평균 대기 시간에 대한보다 정확한 아이디어를 얻으려면 두 개 이상의 항목을 검색해야합니다. 1000 이상을 시도하고 평균을냅니다. – garnaat