내용으로 건너뛰기

Amazon RDS for PostgreSQL에서 DiskQueueDepth가 증가하는 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Relational Database Service(Amazon RDS) for PostgreSQL에서 DiskQueueDepth가 증가하는 문제를 해결하려고 합니다.

간략한 설명

DiskQueueDepth는 애플리케이션에서 제출했지만 아직 스토리지 디바이스로 전송되지 않은 입력 및 출력(I/O) 요청 수입니다. 디스크 또는 스토리지가 다른 요청으로 사용 중이므로 요청이 보류 중입니다.

DiskQueueDepth가 높으면 I/O 요청이 스토리지 시스템에서 처리할 수 있는 속도보다 빠르게 증가했음을 나타냅니다. Amazon RDS는 이 지표를 평균 1분 간격으로 보고합니다. 사용 가능한 1,000 IOPS마다 대기열 길이를 1로 지정하는 것이 모범 사례입니다.

참고: I/O 성능을 측정하려면 인스턴스의 처리량과 I/O 작업 수를 확인합니다.

해결 방법

Amazon RDS for PostgreSQL에서 DiskQueueDepth가 증가하는 문제를 해결하려면 다음 작업을 완료하십시오.

높은 DiskQueueDepth 식별

높은 DiskQueueDepth를 식별하려면 다음과 같이 확인하십시오.

  • 성능 문제가 있는 경우 Amazon CloudWatch 지표를 확인합니다. DiskQueueDepth 지표에서 평소보다 높은 급증을 찾습니다. DiskQueueDepth가 장기간 상승된 상태로 유지되면 쿼리가 실행되기 전에 더 오래 대기합니다.
  • 인스턴스 유형 제한을 확인합니다. ReadIOPS, WriteIOPS, ReadThroughputWriteThroughput 지표가 인스턴스 유형 제한에 도달했는지 확인합니다.
  • ReadThroughputWriteThroughput 지표를 확인합니다. CloudWatch는 이 데이터를 초당 바이트 단위로 표시하므로 더 명확하게 해석하려면 이 값을 MB/s 또는 GB/s로 변환하십시오. 할당된 처리량 제한에 도달했는지 확인하려면 동일한 기간에 대한 두 지표를 모두 합산합니다. 인스턴스에 할당된 처리량에 대한 자세한 내용은 Amazon RDS 인스턴스 유형 설명서를 참조하십시오.
  • EBSByteBalance% 지표를 확인합니다. **EBSByteBalance%**가 0이거나 0에 가까울 경우 인스턴스는 높은 처리량을 소비합니다. 또한 바이트 밸런스가 0이면 대역폭의 스로틀링을 나타냅니다.

스토리지 유형 및 크기 확인

스토리지 유형 및 크기를 확인하려면 다음 작업을 수행하십시오.

  • 워크로드를 최적화합니다. 워크로드의 효율성을 조정하고 개선하는 데 사용할 수 있는 옵션을 살펴봅니다.
  • 범용 SSD(gp2)의 경우 스토리지 크기에 충분한 기준 IOPS 및 처리량이 있는지 확인합니다.
  • 더 많은 IOPS 또는 프로비저닝된 gp3, io1 및 io2를 확보하려면 워크로드를 조정하거나 CPU, 메모리 및 I/O 용량이 증가된 더 큰 인스턴스로 확장합니다.

갑작스러운 트래픽 증가 확인

데이터베이스 활동이 예기치 않게 급증하면 DiskQueueDepth가 증가할 수 있습니다. 연결 급증을 식별하려면 다음 작업을 수행하십시오.

  • Amazon CloudWatch 지표에서 DatabaseConnections 그래프를 확인합니다. 동시 연결이 너무 많으면 읽기 및 쓰기 작업량이 높아질 수 있습니다.
  • 사용 가능한 1,000 IOPS마다 대기열 길이 1을 달성합니다. (이 값은 범용 SSD 볼륨의 기준이며 프로비저닝된 IOPS SSD 볼륨의 프로비저닝된 양입니다.)
  • 애플리케이션 성능을 모니터링하고 요구 사항에 따라 조정합니다.

마이크로 버스팅 문제 확인

인스턴스가 처리량 또는 IOPS 제한에 도달하지 않았지만 지연 시간과 대기열 길이가 길면 인스턴스에 마이크로 버스팅이 발생할 수 있습니다. 이 문제를 해결하려면 Amazon EBS 볼륨이 마이크로 버스팅 상태인지 식별하여 이러한 상황이 발생하지 않도록 하려면 어떻게 해야 합니까?를 참조하십시오. 또한 향상된 모니터링이 활성화되어 있는지 확인한 다음, 세분성을 1초로 설정하여 마이크로 버스팅이 문제인지 확인하십시오.

잘못된 쿼리 최적화

잘못된 쿼리를 최적화하려면 다음 작업을 수행하십시오.

  • 높은 DiskQueueDepth 기간에 실행되는 쿼리 유형을 확인하려면 Performance Insights를 사용합니다.
  • 쿼리 실행 계획을 생성하려면 EXPLAIN을 사용하여 최적화 기회를 식별합니다. 자세한 내용은 PostgreSQL 웹 사이트의 EXPLAIN을 참조하십시오.
  • 과도한 I/O를 유발할 수 있는 전체 테이블 스캔, 비효율적인 조인 또는 누락된 인덱스가 있는지 확인합니다.