AWS RDS 데이터베이스에 필요한 IOP 수를 어떻게 확인할 수 있습니까?


14

mysql 데이터베이스의 일부를 AWS로 마이그레이션하고 있습니다. 문제의 데이터는 99 % 쓰기이며 각 행에는 약 1k 개의 varchar 필드, 날짜 시간 및 4 개의 정수가 있습니다.

피크 타임에는 시간당 20-25k 개의 레코드를 삽입해야한다고 추정합니다.

현재 데이터베이스에서 iostat -h를 실행했으며 약 40 tps가보고되었습니다.

어떤 유형의 IOPS가 필요한지 어떻게 알 수 있습니까?

답변:


11

테스트해야합니다.

인 벨로 프 계산을 수행하여 인서트 당 I / O 수를 대략적으로 계산하고 초당 트랜잭션 수를 곱하고 버퍼 룸에 추가하는 등의 작업을 수행 할 수 있지만 테스트하기가 훨씬 쉽습니다.

가장 쉬운 방법은 최선의 추측을 할당 한 다음 돌아가서 실제 테스트와 일치하도록 늘리거나 줄이는 것입니다. 이는 클라우드 기반 환경을 사용하는 사치 중 하나이며 하드웨어 변경은 자본 비용이 낮으며 이러한 변경은 일반적으로 구성 업데이트 만 필요합니다. EBS 볼륨을 사용하면 IOPS 수를 늘릴 수 없으며 볼륨 크기도 확장해야합니다 1 . 언제든지 새 볼륨을 생성하고 데이터를 복사 할 수 있습니다. 이 일부 중단 될 것입니다하지만있는 거 데이터가없는 경우 거대한 그것은 원시 사본 것으로 훨씬해서는 안됩니다.

필요한 I / O 수에 대한 추측이 있습니다. 세부 사항은 인덱스 수와 트래픽 흐름이 매끄 럽거나 급증하는지에 따라 다르지만 다시 한 번 추측입니다. 25K tx / hour에서 ~ 7 tx / sec를 얻습니다. 각 행의 크기는 단일 I / O (4K)의 크기보다 작기 때문에 특히 관련이 없습니다. 각 트랜잭션은 1-5 IOP (1 차 삽입과 몇 개의 색인 트리 삽입) 사이에서 수행되므로 ~ 35 / s라고 가정하겠습니다.

최소 100 IOPS로 시작하여 필요한 경우 확장합니다.


1
이에 대한 후속 조치로 BTW : 300GB 데이터베이스를 설정했으며 이는 최소 1000 IOPS를 의미했습니다. 약 6 개월이 RDS에 게시 된 후 I / O 문제로 인해 0 건의 사고가 발생했습니다. 아마 과잉이지만, 가능한 한 불을 피하고 잊어 버립니다.
chris

부하에 따라 프로비저닝 된 IOP가 필요하지 않습니다. 2500-3500 개의 총 IOP를 초과하지 않을 경우 표준 스토리지는 300GB (EBS 스트라이핑 때문에)에서 수행됩니다.
Ross

7

기본 iostat (iostat -h) 도구를 사용하여 현재 사용중인 iops 수에 대한 아이디어를 얻었습니다. 그로부터 나는 그 부하량의 4 배 미만이었고 그 양과 함께 가면 얼마나 많이 사용하는지 추정했습니다. 나를 위해 780 IOPS로 운동 했으므로 800 IOPS로갔습니다.


iostat -h는 약 40 tps를보고하므로 40 iops에 해당합니까? @sehrope가 계산 한 숫자와 일치합니다.
chris

1
맞습니다.
Mark D

0

iostat를 사용하여 응용 프로그램이 수행하는 IOPS의 양을 결정합니다. iostat는이를 tps로보고합니다. KB / t는 전송량이 청크 크기 인 256 KiB보다 작은 지 확인하는 데 도움이됩니다. 1 초의 대기 시간 (예 : iostat -w 1)으로 iostat를 실행합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.