스크립트
from boto.s3.connection import S3Connection
from boto.s3.key import Key
import time
startime=time.time()
conn = S3Connection(XXX','XXX')
bucket = conn.create_bucket('terry-s3-performance-test')
for i in range(1,100):
k = Key(bucket)
k.key = "logfile%s" % i
k.set_contents_from_filename('logfile origin')
conn.close()
endtime = time.time()
print 'Elaped time %s'% (endtime-startime)
위의 스크립트를 멀티프로세스로 돌려서 테스트 해본 결과
16K 파일 기준으로 (클라이언트는 같은 region에 ec2에서 수행), 클라이언트당 15TPS 정도가 나옴. 클라이언트(프로세스)수를 늘려도, 개당 15TPS가 일정하게 유지됨. 아마도 QoS를 보장하는 기능이 있는듯함
'클라우드 컴퓨팅 & NoSQL > Amazon Web Service' 카테고리의 다른 글
Amazon 클라우드에서 S3 Read/Write 성능 높이는 방법-Partitioning (0) | 2013.03.20 |
---|---|
Amazon의 설치 배포 자동화 솔루션 Opsworks (0) | 2013.02.26 |
간단한 S3 Performance Test (3) | 2013.01.25 |
아마존의 SSD의 NoSQL 서비스 Dynamo (0) | 2012.12.07 |
Amazon S3 서비스 소개 (0) | 2012.12.06 |
EMR 특징 (1) | 2012.12.06 |
댓글을 달아 주세요
위 Python 스크립트 관련해서 질문 드립니다~
S3에 자동 업로드 하려고 스크립트를 짜고 있는데요.(region은 미국)
1. 웹에서 업로드하는 속도와 위 스크립트로 업로드하는 속도가 굉자히 차이가 많이 나던데 그 이유가 위에서 말씀하신 QoS랑 연관이 있는걸까요?
2. 전 유독 미국 지역에 업로드하는건 이상이 없는데 다른 지역은 계속 S3ResponseError : 404 Not Found가 뜨더라구요. 혹시 이런 현상 겪으신적 있으 신가요?
3. 혹시 사용중이신 Python 버전과 boto 버전이 얼마인지 알 수 있을 까요?
감사합니다 ^^
1. 이론적으로는 차이가 없어야 하는데, 잘 모르겠네요. 저는 테스트시에만 콘솔로 잠깐 올리고, 대부분 boto로 바로 쏩니다.
2. S3 bucket은 각 region 마다 호환이 안됩니다. 즉 미국에 만드셨으면, 미국 S3로 업로드 하셔야 합니다.
3. Python 2.7, boto 는 python 2.7에 맞는 버전을 사용합니다.
음 그렇군요. 답변 감사합니다. ^^
2번 질문에서요. bucket을 각 region 마다 일단 생성을 하고 각 region 마다 upload test를 했습니다. 근데 특정 region에만 실패를 하더라구요.
혹시 이런 문제도 겪으신적 있으신가요?