EC2 인스턴스가 느리거나 응답이 없거나 액세스할 수 없지만 CPU 및 메모리 사용량은 높지 않습니다.

최종 업데이트 날짜: 2020년 9월 22일

Amazon EBS(Amazon Elastic Block Store) 범용 SSD(gp2) 루트 볼륨이 있는 Amazon EC2(Amazon Elastic Compute Cloud) 인스턴스에 연결하는 데 문제가 있습니다. CPU와 메모리 사용률이 높지 않지만 연결이 느리거나 시간 초과됩니다.

간략한 설명

인스턴스가 의존하는 외부 서비스 문제, 디스크 스래싱 또는 네트워크 연결 문제 등 이 문제의 잠재적 원인은 매우 다양합니다. 이 문서에서는 gp2 루트 볼륨에서 소진된 I/O 버스트 크레딧이라는 일반적인 원인 하나를 설명합니다. (대부분의 리전에서 gp2는 루트 볼륨의 기본 스토리지 드라이브입니다. 자세한 내용은 Amazon EBS 볼륨 유형을 참조하십시오.)

해결 방법

I/O 버스트 크레딧 밸런스 확인

  1. Amazon EC2 콘솔을 여십시오.
  2. 탐색 창에서 인스턴스를 선택한 다음, 인스턴스를 선택하십시오.
  3. 설명 탭에서 루트 디바이스 링크를 선택한 다음, EBS ID링크를 선택하십시오.
  4. EBS 볼륨의 Monitoring 탭을 선택한 다음, 버스트 밸런스 지표를 찾으십시오. 버스트 밸런스가 0%일 경우 이는 모든 버스트 크레딧이 사용되고 볼륨이 기준 성능 수준을 초과하여 버스트할 수 없음을 의미합니다. 이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.

IOPS 요구 사항 추정 후, 로드를 지원하도록 볼륨을 수정

  1. Amazon CloudWatch에서 루트 EBS 볼륨의 VolumeReadOpsVolumeWriteOps 지표를 찾으십시오. 자세한 내용은 사용 가능한 지표 검색을 참조하십시오.
  2. CloudWatch Sum 통계를 사용하여 VolumeReadOpsVolumeWriteOps의 피크 레벨을 가져오십시오. 그런 다음, 두 숫자를 함께 추가하십시오. 예:
    VolumeReadOps
    = 737,000
    VolumeWriteOps
    = 199,000
    합계 = 936,000
  3. 필요한 IOPS 수를 추정하기 위해 이전 단계의 합계를 측정 간격의 초 수로 나누십시오. 예:
    측정 간격 = 5분(300초)
    936,000 / 300 = 3,120IOPS

gp2 볼륨의 기준 성능은 볼륨 크기의 GiB당 3IOPS로 선형적으로 확장됩니다. 즉, 성능을 향상하려면 IOPS가 3,120인 볼륨을 1,040GiB까지 확장해야 합니다(3,120 / 3 = 1,040).

또는 gp2에서 프로비저닝된 IOPS SSD(io1)로 볼륨을 변경하십시오. io1 볼륨을 사용하면 볼륨 크기를 늘리지 않고 필요한 IOPS 수를 지정할 수 있습니다. io1 볼륨을 사용하는 경우에 대한 자세한 내용은 프로비저닝된 IOPS SSD(io1 및 io2) 볼륨을 참조하십시오. gp2io1 볼륨의 비용을 비교하려면 Amazon EBS 요금을 참조하십시오.

워크로드 분산 방식 변경

EC2 인스턴스에 여러 애플리케이션이 있는 경우 이 애플리케이션은 루트 EBS 볼륨의 IOPS를 두고 경쟁합니다. 시간이 지나면서 워크로드가 증가하면 IOPS 수요가 증가합니다. 인스턴스의 성능을 개선하려면 애플리케이션에 루트가 아닌 EBS 볼륨을 추가로 사용하는 것이 좋습니다. 또한 운영 체제에만 루트 볼륨을 사용하는 것이 좋습니다.

볼륨 크기 및 워크로드 분산을 수정한 후에도 EC2 인스턴스에 연결하는 데 문제가 있는 경우에는 인스턴스 연결 문제 해결을 참조하십시오.