2017-04-19 3 views
0

이전에 AWS를 사용한 적이 없으며 EC2 인스턴스에서 호스팅되는 PHP 응용 프로그램을 만들었습니다.AWS 증가 iops

응용 프로그램은 레코드를 처리 한 후 레코드를 RDS에 삽입합니다. 프리 티어에서는 초 당 약 10 개의 레코드를 삽입합니다.

이 프로세스가 진행되는 속도를 어떻게 향상시킬 수 있습니까? 1000 iops의 제한으로 100GB 프로비저닝 된 IOPS 스토리지를 추가했습니다.

그러나 애플리케이션을 실행할 때 이전과 동일한 속도를 얻습니다.

Ec2 인스턴스 및 RDS 인스턴스의 사양에 따라 데이터베이스에 쓰는 속도가 결정됩니다.

+0

제공된 IOPS는 자기 디스크 시대의 평균입니다. gp2를 사용하고 100GB 디스크 공간 (100 x 3 = 300 IOPS)을 유지하십시오. – mootmoot

답변

0

EC2 및 RDS 인스턴스가 동일한 영역에 있으면 RDS 사양을 향상시켜 약간의 성능 향상을 얻을 수 있지만 일반적으로 MySQL은 쓰기 속도가 빠릅니다. 특히 테이블에 인덱스를 추가 할 때 속도가 빠릅니다.

인서트를 개별적으로 수행하는 대신 쿼리에서 일괄 처리하여 성능을 향상시킬 수 있습니다.

INSERT INTO users (name, gender) VALUES 
    ('bob', 'm'), 
    ('jane', 'f') 

당신이 메모리에 작성하고 비동기 적으로 배치에 삽입 할 SQS 또는 elasticache 같은 대기 시스템의 일종을 사용하는 경우이 쉽게 될 수 있습니다.

+0

만약 이것이 바보 같은 의견이라면, 큐어를 일괄 처리하는 것을 제외하고 이것은 결코 초당 100 회라고 말하는 레코드 삽입의 수를 크게 향상시킬 수 없다는 것을 의미합니까? – MattBlack

+0

반드시 그렇지는 않습니다. MySQL에는 자체적 인 병목 현상이 있습니다. 예를 들어 Aurora RDS를 사용합니다. 그러나 IOP를 제공 할 경우 수천 또는 수만 회의 I/O 삽입 작업을 수행 할 수 있습니다. Softo 문제없이 초당 20 또는 30k 번 쓰기가 가능한 DynamoDB가 더 적합한 지 물어볼 가치가 있습니다. – Henry

0

무료 티어 인스턴스는 캐주얼 사용에 대한 의미한다

  1. AWS를 숙지 마십시오. t2.micro는 "CPU credit"버스트 모드에서 실행됩니다. 이러한 CPU 여백이 없어지면 서버가 25 % 이상의 CPU를 스로틀 링하여 성능이 저하됩니다.

  2. 실제 문제가 무엇인지 알아 보려면 RDS IOPS 정보를 보내려면 cloudwatch에 조금만 투자해야합니다. CPU, RAM 또는 IO 문제인지 확인합니다.

  3. AWS는 상당 기간 SSD gp2 스토리지를 도입했습니다. 따라서 프로비저닝 된 IOPS로 곧바로 이동하는 것보다 GB x 3 IOPS 메커니즘 당 AWS를 사용해야합니다. 이 문서는 why you should over provisioned gp2 storage than use provisioned IOPS에 대해 알려줍니다. 또한 버스트 IO를 사용하여 gp2로 추가 비용을 얻을 수 있습니다.