내용으로 건너뛰기

Amazon RDS for SQL Server 인스턴스의 높은 CPU 사용률 문제를 해결하려면 어떻게 해야 합니까?

5분 분량
0

Amazon Relational Database Service(Amazon RDS) for Microsoft SQL Server DB 인스턴스의 CPU 사용률이 높습니다.

간략한 설명

다음과 같은 이유로 인해 CPU 사용률이 증가할 수 있습니다.

  • 사용자가 시작한 과중한 워크로드, 여러 개의 동시 쿼리 또는 장기 실행 트랜잭션
  • 프로비저닝이 부족한 인스턴스 클래스를 워크로드에 사용
  • 최신 상태가 아닌 통계 및 인덱스 조각화 또는 누락된 인덱스
  • 개선 범위가 있는 쿼리
  • 차단 및 교착 상태
  • 병렬 처리
  • 빈번한 컴파일 및 재컴파일
  • 파라미터 스니핑
  • 스레드 소진

Amazon RDS for SQL Server 인스턴스의 높은 CPU 사용률 원인을 파악하려면 다음 도구를 사용하십시오.

소스를 파악한 후에는 워크로드를 분석하고 최적화하여 높은 CPU 사용률을 줄일 수 있습니다.

해결 방법

Amazon RDS용 CloudWatch 지표

Amazon RDS용 CloudWatch 지표를 사용하여 장기간에 걸친 CPU 패턴을 식별할 수 있습니다.

워크로드로 인해 CPU 사용률이 증가하는 시간을 확인하려면 다음 단계를 완료하십시오.

  1. Amazon RDS 콘솔을 엽니다.
  2. 탐색 창에서 데이터베이스를 선택한 다음, 모니터링할 데이터베이스를 선택합니다.
  3. 모니터링 탭을 선택합니다.
  4. 모니터링 메뉴를 선택한 다음, CloudWatch를 선택합니다.
  5. 다음 CloudWatch 지표를 검색한 다음, 그래프를 비교합니다.
    WriteIOPs
    ReadIOPs
    ReadThroughput
    WriteThroughput
    CPUUtilization
    CPUCreditBalance
    CPUCreditUsage

참고: CPU 크레딧 밸런스가 지속적으로 감소하고 CPU 크레딧 사용량이 지속적으로 증가한다면 워크로드에 사용할 CPU 코어가 충분하지 않은 것입니다. t2 또는 t3 인스턴스 클래스의 인스턴스를 사용하는 경우 인스턴스가 과소 프로비저닝된 상태인지 확인하십시오.

기간을 확인한 후 향상된 모니터링을 사용하여 DB 인스턴스와 연결된 데이터를 더 자세히 검토하십시오. 1, 5, 10, 15, 30 또는 60초 간격으로 데이터를 수집하도록 향상된 모니터링을 설정할 수 있습니다.

향상된 모니터링

향상된 모니터링을 설정하여 DB 인스턴스에서 실행 중인 운영 체제(OS)를 모니터링할 수 있습니다.

향상된 모니터링으로 CPU 사용률을 확인하려면 다음 단계를 완료하십시오.

  1. Amazon RDS 콘솔을 엽니다.
  2. 탐색 창에서 데이터베이스를 선택한 다음, 모니터링할 데이터베이스를 선택합니다.
  3. 모니터링 탭을 선택합니다.
  4. 모니터링 메뉴를 선택한 다음, OS 프로세스 목록을 선택합니다.

OS 프로세스, RDS 프로세스, SQL Server 프로세스 또는 SQL 에이전트 프로세스가 높은 CPU 사용률을 유발하는지 확인하십시오. 또한 이러한 프로세스가 사용하는 CPU 및 메모리 비율을 확인할 수 있습니다.

콘솔을 사용하여 성능 지표를 모니터링할 수 있습니다. 모니터링 탭에서 모니터링 메뉴를 선택한 다음, 그래프 관리를 선택합니다.

CPU가 사용자 프로세스를 실행 중인지, 커널을 실행 중인지 또는 유휴 상태인지 확인하려면 CPU 사용자, CPU 시스템, CPU 유휴 지표에 대한 그래프를 선택하십시오. 그런 다음, 디스크 I/O와 물리적 디바이스 I/O에 대한 지표를 선택합니다. 이러한 지표에는 읽기 IO/s, 쓰기 IO/s, 읽기 Kb/s, 쓰기 Kb/s가 포함됩니다. 또한 사용 가능한 메모리, SQL Server 총 메모리 및 총 메모리를 비롯한 메모리 관련 파라미터를 볼 수 있습니다. 이러한 지표는 CPU가 리소스를 기다리는 데 더 많은 시간을 소비할 경우 CPU 사용률이 높아질 수 있으므로 유용합니다.

자세한 내용은 RDS 콘솔에서 OS 지표 보기를 참조하십시오.

Database Insights

CloudWatch Database Insights를 사용하여 인스턴스 그룹에서 실행되는 데이터베이스 로드 및 개별 OS 프로세스의 주요 원인 문제를 해결할 수 있습니다.

기본적으로 Database Insights의 표준 모드는 Amazon RDS 데이터베이스에 활성화되어 있습니다. DB 인스턴스를 만들거나 수정할 때 표준 모드를 활성화려면 Amazon RDS용 Database Insights의 표준 모드 활성화를 참조하십시오.

참고: 더 광범위한 권한을 사용하지 않는 경우 Database Insights에 필요한 IAM 권한을 부여해야 합니다. 자세한 내용은 CloudWatch Database Insights 시작하기를 참조하십시오.

Amazon RDS 및 인스턴스 클래스 지원에 대한 자세한 내용은 Database Insights에 대한 Amazon RDS DB 엔진, 리전 및 인스턴스 클래스 지원을 참조하십시오.

Performance Insights

Performance Insights를 활성화하여 데이터베이스 로드의 원인이 되는 쿼리를 식별하십시오.

다음 단계를 완료하십시오.

  1. Performance Insights 대시보드에 액세스합니다.
  2. 분석하려는 기간에 해당하는 상위 SQL 탭을 확인합니다.
  3. 가장 오래 걸리는 쿼리를 식별합니다.
  4. 리소스 사용량이 많은 쿼리와 이 기간 동안 관찰된 대기 이벤트를 확인합니다. 다음은 높은 CPU 사용률과 자주 관련된 대기 이벤트입니다.

SOS_SCHEDULER_YIELD는 워커 스레드가 다른 스레드를 실행하도록 양보했음을 보여줍니다. 대기 수가 많고 대기 시간이 짧은 경우 쿼리는 일반적으로 CPU에 종속됩니다. 워커 스레드가 양보하면 CPU에 종속된 쿼리의 대기 시간이 늘어날 수 있습니다. 대기 시간이 길면 워크로드를 검토해야 합니다. SOS_SCHEDULER_YIELD가 자주 발생하는 경우 CPU 사용량이 문제입니다. 워크로드 유형을 검토하고 추가 튜닝을 수행합니다.

CXPACKETCXCONSUMER는 일반적으로 문제가 되지 않는 병렬 처리 관련 대기 이벤트입니다. 그러나 대기 이벤트가 자주 발생하고 성능에 영향을 미치는 경우, 쿼리를 검토하고 병렬 처리의 비용 임계값에 적절한 값을 설정하십시오. SQL Server가 파라미터 그룹에서 비용이 낮은 병렬 처리 파라미터를 선택하는지 확인하십시오. 쿼리 또는 인스턴스 수준에서 최대 병렬 처리도(MAXDOP)를 1로 높일 수도 있습니다.

ThreadPool은 스레드 소진을 보여줍니다. 인스턴스 클래스가 이를 처리할 수 있는 경우 최대 워커 스레드 파라미터를 높이십시오. 차단, 높은 워크로드 또는 많은 병렬 쿼리로 인해 과도한 스레드가 사용되면 ThreadPool 대기가 발생할 수 있습니다. 또한 최대 워커 스레드 파라미터를 잘못 구성한 경우 ThreadPool 대기 이벤트가 발생할 수 있습니다.

데이터베이스 지표에서 배치 요청, SQL 컴파일 및 SQL 재컴파일을 확인하십시오. 두 번 이상 컴파일되는 쿼리가 있는지 확인하십시오. 또한 주어진 배치에 대해 쿼리가 자주 재컴파일되는지 확인하십시오. 그렇다면 쿼리 코드에 WITH RECOMPILE 절이 사용되었음을 나타냅니다. 이 두 가지 이유 모두 과도한 CPU 사용량을 유발할 수 있습니다.

SQL Server 도구

SQL Server 도구를 통해 높은 CPU 사용률 문제를 해결하려면 다음 작업을 수행하십시오.

  • 특정 쿼리에서 높은 CPU 사용률, 업데이트 통계, 누락된 인덱스, 파라미터 스니핑을 분석합니다. 자세한 내용은 Microsoft 웹 사이트에서 SQL Server의 높은 CPU 사용량 문제 해결을 참조하십시오.
  • 실행 계획에서 성능이 저조한 쿼리를 확인한 다음, 추가 튜닝을 수행합니다. 자세한 내용은 Microsoft 웹 사이트에서 실제 실행 계획 표시를 참조하십시오.
  • 쿼리와 확장된 이벤트를 사용하여 과도한 잠금, 차단 및 교착 상태 관련 문제를 해결합니다. 자세한 내용은 Microsoft 웹 사이트에서 SQL Server 차단 문제 이해 및 해결을 참조하십시오.
    참고: RDS for SQL Server에서 확장된 이벤트를 구성하는 경우 표준 방법을 사용하여 .xel 파일을 저장할 수 없습니다.
  • SQL Server 보고서를 사용하여 워크로드를 미세 조정합니다. 자세한 내용은 Microsoft 웹 사이트의 성능 대시보드를 참조하십시오.