Linux 또는 Windows에서 Azure Virtual Machines 성능 문제 해결
적용 대상: ✔️ Linux VM ✔️ Windows VM
이 문서에서는 병목 상태 모니터링 및 관찰을 통한 VM(가상 머신) 일반 성능 문제 해결에 대해 설명하고 발생할 수 있는 문제에 대한 가능한 수정을 제공합니다. 모니터링 외에도 IO/CPU/메모리와 관련된 모범 사례 권장 사항 및 주요 병목 상태와 함께 보고서를 제공할 수 있는 Perfinsights를 사용할 수도 있습니다. Perfinsights는 Azure의 Windows 및 Linux VM 모두에서 사용할 수 있습니다.
이 문서에서는 모니터링을 사용하여 성능 병목 상태를 진단하는 방법을 안내합니다.
Azure Portal을 통해 VM 진단 사용
VM 진단을 사용하도록 설정하려면 다음을 수행합니다.
Azure Portal을 통해 스토리지 계정 메트릭 보기(관리되지 않는 디스크용)
관리되지 않는 디스크를 사용하는 VM의 경우 스토리지는 IO 성능을 분석하려는 경우 매우 중요한 계층입니다. 스토리지 관련 메트릭의 경우 추가 단계로 진단을 사용하도록 설정해야 합니다.
VM을 선택하여 VM이 사용하는 스토리지 계정(또는 계정)을 식별합니다.
- Azure Portal에서 VM을 선택합니다.
- 설정에서 디스크를 선택한 다음 디스크가 저장된 스토리지 계정을 찾습니다.
- 스토리지 계정으로 이동하고 메트릭을 선택합니다.
성능 병목 상태 식별
필요한 메트릭에 대한 초기 설정 프로세스를 진행하고 VM 및 관련 Storage 계정에 대한 진단을 사용하도록 설정한 후 분석 단계로 전환할 수 있습니다.
모니터링 액세스
Azure Portal에서 조사하려는 Azure VM을 선택하고, 모니터링 섹션의 메트릭을 선택한 다음, 메트릭을 선택합니다.
관찰 타임라인
리소스 병목 현상이 있는지 확인하려면 데이터를 검토합니다. 컴퓨터가 제대로 실행되고 있지만 성능이 최근에 저하된 것으로 보고된 경우 보고된 변경 전, 문제 중 및 이후에 성능 메트릭 데이터를 포함하는 데이터의 시간 범위를 검토합니다.
CPU 병목 상태 확인
- 시간 범위를 설정합니다.
- 메트릭에서 CPU 비율을 선택합니다.
CPU 성능 추세 모니터링
성능 문제를 볼 때 추세를 인식하고 영향을 주는지 이해합니다. 다음 섹션에서는 포털의 모니터링 그래프를 사용하여 추세를 보여 줍니다. 또한 동일한 기간에 차이점 리소스 동작을 상호 참조하는 데 유용할 수 있습니다. 그래프를 사용자 지정하려면 Azure Monitor 데이터 플랫폼을 클릭합니다.
Spiking – Spiking은 예약된 작업/알려진 이벤트와 관련이 있을 수 있습니다. 작업을 식별할 수 있는 경우 태스크가 필요한 성능 수준에서 실행되는지 여부를 결정합니다. 성능이 허용되는 경우 리소스를 늘릴 필요가 없을 수 있습니다.
급증 및 상수 – 종종 새 워크로드를 나타냅니다. 인식된 워크로드가 아닌 경우 VM에서 모니터링을 사용하여 동작을 유발하는 프로세스(또는 프로세스)를 확인할 수 있습니다. 프로세스가 인식되면 증가된 소비가 비효율적인 코드로 인해 발생하는지 또는 정상적인 소비로 인해 발생하는지 확인합니다. 정상적인 사용량인 경우 프로세스가 필요한 성능 수준에서 작동하는지 여부를 결정합니다.
상수 – VM이 항상 이 수준에서 실행되었는지 또는 진단이 활성화된 이후 해당 수준에서만 실행되었는지 확인합니다. 그렇다면 문제를 일으키는 프로세스(또는 프로세스)를 식별하고 해당 리소스를 더 추가하는 것이 좋습니다.
꾸준히 증가 – 지속적인 사용량 증가는 종종 비효율적인 코드이거나 더 많은 사용자 워크로드를 수행하는 프로세스입니다.
높은 CPU 사용률 수정
애플리케이션 또는 프로세스가 최적으로 실행되지 않고 CPU 사용량이 95% 이상으로 유지되는 경우 다음 작업 중 하나를 수행할 수 있습니다.
- 즉각적으로 문제 완화 - 더 많은 코어를 사용하여 VM의 크기를 크기로 늘립니다.
- 문제 파악 - 애플리케이션 프로세스를 찾아 문제를 해결합니다.
VM을 확장해도 CPU가 여전히 95% 이상 실행되는 경우, 이 설정이 더 나은 성능 또는 더 높은 애플리케이션 처리량을 허용되는 수준으로 제공하는지 확인합니다. 그러지 않는 경우 개별 애플리케이션 프로세스의 문제를 해결합니다.
Windows 또는 Linux용 Perfinsights를 사용하여 CPU 소비를 구동하는 프로세스를 분석할 수 있습니다.
메모리 병목 상태 확인
메트릭을 보려면 다음을 수행합니다.
- 섹션을 추가합니다.
- 타일을 추가합니다.
- 갤러리를 엽니다.
- 메모리 사용량을 선택하고 끌어옵니다. 타일이 도킹되면 마우스 오른쪽 단추를 클릭하고 6x4를 선택합니다.
메모리 성능 추세 모니터링
메모리 사용량은 VM에서 사용 중인 메모리 양을 보여 줍니다. 추세와 문제가 표시되는 시간에 매핑되는지 여부를 이해합니다. 항상 100MB 이상의 사용 가능한 메모리가 있어야 합니다.
스파이크 및 상수/일정한 안정 사용 - 관계형 데이터베이스 엔진과 같은 일부 애플리케이션이 많은 양의 메모리를 할당하므로 높은 메모리 사용률이 성능 저하의 원인이 아닐 수 있으며, 이 사용률은 중요하지 않을 수 있습니다. 그러나 메모리 부족 애플리케이션이 여러 개인 경우 메모리 경합으로 인한 성능 저하로 인해 디스크에 트리밍 및 페이징/교환이 발생할 수 있습니다. 이러한 성능 저하는 종종 애플리케이션 성능에 영향을 미치는 눈에 띄는 원인입니다.
꾸준히 소비 증가 – 가능한 애플리케이션 '예열', 이 사용량은 데이터베이스 엔진 시작 중 일반적입니다. 그러나 애플리케이션의 메모리 누수 징후일 수도 있습니다. 애플리케이션을 식별하고 동작이 예상되는지 여부를 이해합니다.
페이지 또는 스왑 파일 사용 – Windows 페이징 파일(D:에 있음) 또는 Linux 스왑 파일(위치 /dev/sdb
)이 많이 사용되고 있는지 확인합니다. 이러한 파일을 제외한 이러한 볼륨에 아무 것도 없는 경우 해당 디스크에서 높은 읽기/쓰기를 확인합니다. 이 문제는 메모리 부족 상태를 나타냅니다.
높은 메모리 사용률 수정
높은 메모리 사용률을 해결하려면 다음 작업 중 하나라도 수행합니다.
- 즉시 완화 또는 페이지 또는 파일 사용 교환을 위해 VM 크기를 메모리가 더 있는 크기로 늘인 다음 모니터링합니다.
- 문제 이해 - 애플리케이션/프로세스를 찾고 고가용성 메모리 애플리케이션을 식별하기 위한 문제 해결
- 애플리케이션을 알고 있는 경우 메모리 할당을 제한할 수 있는지 확인합니다.
더 큰 VM으로 업그레이드한 후에도 100%까지 일정한 증가가 계속 발생하는 것을 발견하고 애플리케이션/프로세스를 식별하고 문제를 해결합니다.
Windows 또는 Linux용 Perfinsights를 사용하여 메모리 소비를 구동하는 프로세스를 분석할 수 있습니다.
디스크 병목 상태 확인(관리되지 않는 디스크의 경우)
VM에 대한 스토리지 하위 시스템을 확인하려면 VM 진단 및 스토리지 계정 진단의 카운터를 사용하여 Azure VM 수준에서 진단을 확인합니다.
VM 관련 문제 해결의 경우 Windows 또는 Linux용 Perfinsights를 사용하면 IO를 구동하는 프로세스를 분석하는 데 도움이 될 수 있습니다.
영역 중복 및 Premium Storage 계정에 대한 카운터는 없습니다. 이러한 카운터와 관련된 문제의 경우 지원 사례를 제기합니다.
모니터링에서 스토리지 계정 진단 보기
아래 항목에서 작업하려면 포털에서 VM에 대한 스토리지 계정으로 이동합니다.
- 시간 범위를 설정합니다.
- 메트릭 네임스페이스를 Blob으로 설정합니다.
- 메트릭을 가용성으로 설정합니다.
디스크 성능 추세 모니터링(표준 스토리지에만 해당)
스토리지 관련 문제를 식별하려면 스토리지 계정 진단 및 VM 진단의 성능 메트릭을 확인합니다.
아래의 각 검사에 대해 문제가 문제의 시간 범위 내에서 발생할 때 주요 추세를 찾습니다.
Azure Storage 가용성 확인 – 스토리지 계정 메트릭 추가: 가용성
가용성 저하가 표시되면 플랫폼에 문제가 있을 수 있으며 Azure 상태를 확인합니다. 문제가 표시되지 않으면 새 지원 요청을 제기합니다.
Azure Storage 시간 제한 확인 - 스토리지 계정 메트릭 추가
- ClientTimeOutError
- ServerTimeOutError
- AverageE2ELatency
- AverageServerLatency
- TotalRequests
*TimeOutError 메트릭의 값은 IO 작업이 너무 오래 걸리고 시간이 초과되었음을 나타냅니다. 다음 단계를 수행하면 잠재적인 원인을 식별하는 데 도움이 됩니다.
TimeOutErrors에서 AverageServerLatency가 동시에 증가하는 것은 플랫폼 문제일 수 있습니다. 이 상황에서 새 지원 요청을 제기합니다.
AverageE2ELatency는 클라이언트 대기 시간을 나타냅니다. 애플리케이션에서 IOPS를 수행하는 방법을 확인합니다. 증가 또는 지속적으로 높은 TotalRequests 메트릭을 찾습니다. 이 메트릭은 IOPS를 나타냅니다. 스토리지 계정 또는 단일 VHD의 제한에 도달하기 시작하면 대기 시간이 제한과 관련될 수 있습니다.
Azure Storage 제한 확인 - 스토리지 계정 메트릭 추가: ThrottlingError
제한 값은 스토리지 계정 수준에서 제한되고 있음을 나타냅니다. 즉, 계정의 IOPS 제한에 도달합니다. 메트릭 TotalRequests를 확인하여 IOP 임계값에 도달하고 있는지 여부를 확인할 수 있습니다.
각 VHD는 500 IOPS 또는 60MBit로 제한되지만 스토리지 계정당 누적 한도인 20000 IOPS에 바인딩됩니다.
이 메트릭을 사용하면 제한을 유발하는 Blob과 영향을 받는 Blob을 알 수 없습니다. 그러나 스토리지 계정의 IOPS 또는 수신/송신 제한에 도달합니다.
IOPS 제한에 도달했는지 확인하려면 스토리지 계정 진단으로 이동하여 TotalRequests를 확인하여 20,000개 TotalRequests에 근접하고 있는지 확인합니다. 패턴의 변경, 처음으로 제한이 표시되는지 여부 또는 특정 시간에 이 제한이 발생하는지 여부를 식별합니다.
표준 스토리지에서 새 디스크 제품을 사용하면 IOPS 및 처리량 제한이 다를 수 있지만 Standard Storage 계정의 누적 한도는 20000 IOPS입니다(Premium Storage는 계정 또는 디스크 수준에서 다른 제한이 있음). 다양한 표준 스토리지 디스크 제품 및 디스크당 제한에 대해 자세히 알아보세요.
- Windows의 VM 디스크에 대한 확장성 및 성능 목표입니다.
참조
스토리지 계정의 대역폭은 스토리지 계정 메트릭인 TotalIngress 및 TotalEgress로 측정됩니다. 중복성 및 지역 유형에 따라 대역폭에 대한 임계값이 다릅니다.
스토리지 계정 중복 유형 및 지역에 대한 수신 및 송신 제한에 대해 TotalIngress 및 TotalEgress를 확인합니다.
VM에 연결된 VHD의 처리량 제한을 확인합니다. VM 메트릭 디스크 읽기 및 쓰기를 추가합니다.
표준 스토리지의 새 디스크 제품에는 다른 IOPS 및 처리량 제한이 있습니다(IOPS는 VHD당 노출되지 않음). 데이터를 확인하여 디스크 읽기 및 쓰기를 사용하여 VM 수준에서 VHD의 결합된 처리량 MB에 도달했는지 확인하고 단일 VHD 제한을 초과하도록 VM 스토리지 구성을 최적화합니다. 다양한 표준 스토리지 디스크 제품 및 디스크당 제한에 대해 자세히 알아보세요.
- Windows의 VM 디스크에 대한 확장성 및 성능 목표입니다.
높은 디스크 사용률/대기 시간 수정
클라이언트 대기 시간을 줄이고 VM IO를 최적화하여 VHD 제한을 초과하여 크기 조정
제한 줄이기
스토리지 계정의 상한에 도달하는 경우 스토리지 계정 간에 VHD의 균형을 다시 조정합니다. Azure Storage 확장성 및 성능 목표를 참조하세요.
처리량 증가 및 대기 시간 감소
대기 시간이 중요한 애플리케이션이 있고 높은 처리량이 필요한 경우 DS 및 GS 시리즈 VM을 사용하여 VHD를 Azure Premium Storage로 마이그레이션합니다.
다음 문서에서는 특정 시나리오에 대해 설명합니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.