Cloud SQL 성능 캡처 개요

MySQL용 Cloud SQL 성능 캡처는 시스템 수요 변화로 인해 발생하는 MySQL 데이터베이스의 복잡하고 일시적인 성능 문제를 진단하고 해결하는 데 도움이 됩니다. 애플리케이션 워크로드가 확장되고 주변 인프라가 더 복잡해짐에 따라 데이터베이스에 대한 수요가 증가하고 예측 불가능해집니다. 이러한 외부 시스템 압력으로 인해 데이터베이스 속도가 느려지거나 중단될 수 있습니다.

데이터베이스 성능이 저하되면 더 큰 인프라의 컨텍스트에서 근본 원인을 식별하는 데 표준 측정항목이 충분하지 않을 수 있습니다. 성능 캡처는 문제가 감지되는 순간 데이터베이스의 세부적인 특정 시점 스냅샷을 캡처하여 이 문제를 해결합니다. 구성 가능한 트리거를 사용하여 일시적인 문제가 발생할 때 시스템 전체 스냅샷을 생성할 수 있습니다. 트리거는 성능 문제의 근본 원인이 될 수 있는 장기 실행 트랜잭션을 감지할 수도 있습니다. 장기 실행 트랜잭션을 자동으로 종료하도록 트리거를 구성할 수 있습니다.

사용 사례

이 섹션에는 인스턴스에 성능 캡처를 사용 설정한 후 성능 캡처를 사용하는 방법의 사용 사례가 나와 있습니다.

사용 사례 트리거 조건 진단 통계
실행취소 로그 누적으로 인한 시스템 전체 속도 저하 기록 목록 길이 장기 실행 읽기 또는 대규모 데이터 조작 언어 (DML) 작업으로 인해 InnoDB 삭제 프로세스가 지연되는 시점을 식별합니다. 지연으로 인해 스토리지 압력이 증가하고 성능이 저하될 수 있습니다.
내부 엔진 경합으로 인한 데이터베이스 중단 세마포어 대기 응답하지 않는 데이터베이스를 진단하는 데 유용합니다. 이 트리거는 적응형 해시 색인 (AHI) 또는 버퍼 풀 경합과 같은 InnoDB 스토리지 엔진 내에서 뮤텍스 또는 읽기-쓰기 잠금 경합을 감지할 수 있습니다.
애플리케이션 수준 잠금 경합 또는 색인이 생성되지 않은 쿼리 트랜잭션 잠금 대기 높은 수의 트랜잭션이 LOCK WAIT 상태에 있을 때 트리거되어 행 수준 경합 또는 장기 실행 유휴 트랜잭션을 가리킵니다.
복잡한 정렬 또는 집계로 인한 인스턴스 과부하 높은 CPU 사용률 높은 : 컨테이너 CPU 사용률 중에 상태를 캡처합니다. 이는 비효율적인 쿼리 또는 대규모 동시 실행 급증으로 인해 발생하는 경우가 많습니다.
메모리 부족(OOM) 재시작 위험 높은 메모리 사용량 인스턴스 비정상 종료로 이어지기 전에 스레드당 버퍼 크기 조정 또는 메모리 누수와 같은 문제를 진단하는 데 도움이 됩니다.
갑작스러운 트래픽 급증 또는 병목 현상이 있는 클라이언트 앱 실행 중인 스레드 인스턴스 부하의 일반적인 지표로, 동시 활성 연결의 갑작스러운 급증을 식별하는 데 유용합니다.
과도한 쓰기 워크로드로 인한 복제본의 오래된 데이터 소스보다 뒤처진 시간(초) 읽기 복제본의 복제 지연 시간을 모니터링하여 기본 인스턴스에서 데이터를 동기화하는 데 발생하는 지연 시간을 진단하는 데 도움이 됩니다.
삭제를 차단하는 장기 실행 쿼리 장기 실행 트랜잭션 너무 오랫동안 열려 있고 중요한 잠금을 보유하고 있을 수 있는 트랜잭션을 식별합니다. 또한 장기 실행 트랜잭션을 자동으로 종료할 수 있습니다.

성능 데이터 캡처 방법

성능 캡처는 인스턴스를 모니터링하는 에이전트 기반 서비스로 작동합니다. 성능 캡처를 사용 설정하면 Cloud SQL 인스턴스가 성능 데이터를 캡처하기 위해 다음 작업을 실행합니다.

  1. 에이전트는 인스턴스 구성을 프로브하여 정의한 임계값 기반 트리거를 읽습니다. 그런 다음 에이전트는 구성 가능한 간격(probingIntervalSeconds)으로 인스턴스의 측정항목을 프로브합니다. 이 간격은 기본적으로 30초로 설정됩니다.

  2. 문제가 감지되고 트리거의 임계값이 초과되면 에이전트는 인스턴스의 실시간 상태를 규칙과 계속 비교합니다. 일시적인 급증으로 인한 오경보를 방지하기 위해 에이전트는 전체 성능 캡처를 트리거합니다. 캡처는 구성된 probeThreshold(기본값은 3)에 대한 연속 프로브 중에 조건이 충족되는 경우에 트리거됩니다. 이 연속 임계값은 일시적인 급증으로 인한 캡처를 방지합니다.

    예를 들어 에이전트는 스레드 수가 3회 연속 프로브에서 높다고 감지하면 성능 캡처를 트리거할 수 있습니다.

    여러 트리거 조건이 구성된 경우 Cloud SQL은 조건 중 하나라도 충족되면 캡처를 시작합니다.

  3. 캡처가 트리거되면 성능 캡처가 데이터베이스에 연결되고 일련의 진단 명령어를 실행하여 세부 스냅샷을 캡처합니다.

  4. 캡처된 정보는 로그 항목으로 형식이 지정되고 mysql-performance-capture.log라는 특정 로그 스트림 아래 Cloud SQL 인스턴스의 프로젝트 Cloud Logging으로 직접 전송됩니다.

쿨다운 및 적응형 백오프 기간

과도한 로깅 및 시스템 오버헤드를 방지하기 위해 성능 캡처는 캡처 후 대기 기간을 구현합니다.

표준 쿨다운

캡처가 완료되면 성능 캡처가 30분 표준 쿨다운 을 시작합니다. 이 시간 동안 인스턴스가 확장된 문제 상태에 있더라도 에이전트는 새 캡처를 트리거하지 않습니다.

적응형 쿨다운 및 백오프

인스턴스가 동일한 위반에 대해 캡처를 반복적으로 트리거하는 경우 성능 캡처는 적응형 쿨다운 백오프 메커니즘 을 사용합니다. 이 메커니즘은 잘못 구성된 임계값의 로깅 볼륨과 비용을 제한하는 데 도움이 됩니다.

이 메커니즘에서는 다음이 적용됩니다.

  • 쿨다운이 24시간 으로 연장됩니다.
  • 성능 캡처가 모든 트리거 검사와 진단 캡처를 일시중지하는 절전 모드로 전환됩니다.
  • 인스턴스는 하루에 한 번의 성능 캡처로 제한됩니다.

성능 캡처 트리거

이 섹션에는 MySQL 성능 캡처에 사용할 수 있는 트리거가 나와 있습니다. 표에 나열된 모든 트리거는 명시된 경우를 제외하고 프로브 구성 값 probingIntervalSecondsprobeThreshold를 사용하여 지속적인 트리거 조건을 검증합니다.

트리거 조건 이름 API 이름 설명 기본 구성 범위
높은 CPU
사용률
cpuUtilizationThresholdPercent 데이터베이스 인스턴스의 전체 CPU 사용률이 이 비율을 지속적으로 초과하면 캡처를 트리거합니다. 이는 대규모 정렬 및 집계, 불충분한 색인 생성 또는 매우 높은 동시 실행으로 인해 발생하는 경우가 많은 인스턴스 과부하를 감지하는 데 도움이 됩니다. 사소한 급증에 대한 캡처를 방지하려면 기본값을 인스턴스의 더 높은 비율 범위로 구성하세요. 0 (사용 중지됨) 0 또는
10-99 (%)
높은 메모리
사용량
memoryUsageThresholdPercent 데이터베이스 컨테이너의 메모리 사용량이 인스턴스의 할당된 메모리 비율을 지속적으로 초과하면 캡처를 트리거합니다. 이 트리거는 잠재적인 메모리 부족 문제, 메모리 누수 또는 비효율적인 메모리 구성을 진단하는 데 도움이 될 수 있습니다. 사소한 급증이 캡처되지 않도록 하려면 인스턴스의 범위에서 더 높은 기본값을 설정하세요. 0 (사용 중지됨) 0 또는
10-99 (%)
높은 임시
파일 사용량
구성할 수 없습니다. 이 트리거는 MySQL 8.0 이상에서 자동으로 사용 설정됩니다. MySQL 프로세스에서 만든 임시 파일로 인해 디스크 사용량이 크게 증가하면 캡처를 자동으로 트리거합니다. 임시 파일은 삭제되지만 MySQL 프로세스에서 계속 열려 있는 경우가 많습니다.

이 트리거의 임계값은 차이 임계값에 점진적 에스컬레이션 모델을 사용합니다. 100GB에서 시작하여 모든 쿨다운 후 200GB, 400GB, 최대 1.6TB로 순차적으로 두 배가 됩니다. 점진적 에스컬레이션 모델을 사용하면 임시 파일 사용량의 차이가 높은 수준으로 증가하는 경우에만 성능 캡처가 발생합니다.
사용 설정됨 해당 사항 없음
기록 목록
길이
historyListLengthThresholdCount InnoDB 기록 목록 길이 (HLL)가 구성된 값을 초과하면 캡처를 트리거합니다. 지속적으로 높은 HLL은 InnoDB 삭제 프로세스가 따라갈 수 없고 삭제되지 않은 트랜잭션 수가 증가하고 있음을 나타냅니다. 이는 장기 실행 트랜잭션으로 인해 발생하는 경우가 많습니다. 이 수가 많으면 스토리지 소비가 증가하고 성능 문제가 발생할 수 있습니다.

이 임계값은 워크로드에 따라 다릅니다. 일부 인스턴스는 HLL이 지속적으로 높더라도 충분히 작동할 수 있습니다. 하지만 이 트리거를 사용하여 장기 실행 읽기, 대규모 데이터 조작 언어 (DML) 문 또는 삭제 스레드 병목 현상과 같은 잠재적인 문제를 강조표시할 수 있습니다.
0 (사용 중지됨) 0 또는
10000-10000000
장기 실행
트랜잭션
transactionDurationThreshold 트랜잭션이 구성된 시간(초)보다 오래 실행되면 트랜잭션이 로깅됩니다. 이 트리거는 과도한 기간 동안 잠금을 보유하거나 너무 오랫동안 리소스를 소비할 수 있는 작업을 식별하는 데 유용합니다.

transactionDurationThreshold를 초과하는 트랜잭션은 probingIntervalSeconds 구성(기본값 30초)에 지정된 각 간격 후에 평가됩니다. 하지만 로그 볼륨을 관리하기 위해 이러한 장기 실행 트랜잭션의 세부정보는 최대 10개까지 쿨다운 기간 (30분)마다 한 번씩 Cloud Logging으로 전송됩니다. 상위 10개 트랜잭션의 각 로그 항목에는 INFORMATION_SCHEMA.INNODB_TRX에서 최대 1,024바이트의 전체 쿼리 텍스트가 포함됩니다.
3600 (초) 60 이상
복제본 SQL/IO
스레드 오류
구성할 수 없습니다. 이 트리거는 모든 복제본 인스턴스에서 기본적으로 자동으로 사용 설정되며 사용 중지할 수 없습니다. 복제본 인스턴스의 복제 SQL 스레드 또는 IO 스레드에 오류가 발생하고 중지되면 즉시 캡처를 트리거합니다. 이 트리거는 복제본 무결성을 유지하고 복제 실패를 식별하는 데 중요합니다.

이 트리거는 성능 캡처 조건을 검증하기 위해 probingIntervalseconds 또는 probeThreshold와 같은 프로브 구성 설정을 사용하지 않습니다.
사용 설정됨 해당 사항 없음
실행 중인 스레드 runningThreadsThreshold threads_running 상태 변수를 기반으로 실행 중인 활성 스레드 수가 지정된 값을 초과하면 캡처를 트리거합니다. 예를 들어 활성 실행 중인 스레드 수가 100을 초과하면 성능 캡처를 실행하도록 임계값을 구성할 수 있습니다.

이 트리거는 성능 캡처에 필요합니다. 이 트리거를 명시적으로 구성하지 않으면 기본값이 인스턴스에 속한 vCPU 수를 기반으로 계산됩니다.
MIN(600, cpuCount * 20) 10 이상
소스보다 뒤처진 시간(초)
secondsBehindSourceThreshold 읽기 복제본 인스턴스의 복제 지연 시간(초 단위로 측정)이 지정된 값을 초과하면 캡처를 트리거합니다. 이 트리거를 사용하여 복제 지연 시간을 모니터링하고 진단할 수 있습니다. 이 트리거는 복제본 인스턴스에서 자동으로 사용 설정됩니다. 트리거를 명시적으로 구성하지 않으면 기본값은 900초입니다. 과도한 캡처와 빈번한 쿨다운을 방지하려면 값을 더 높은 값으로 구성하는 것이 좋습니다. 900 (초) 1 이상
세마포어 대기 semaphoreWaitThresholdCount 내부 InnoDB 세마포어에서 대기 중인 스레드 수가 이 트리거의 구성된 값을 초과하면 캡처를 트리거합니다. 이 고급 측정항목은 InnoDB 스토리지 엔진 자체 내에서 뮤텍스 또는 읽기-쓰기 잠금을 사용하여 경합을 나타냅니다. 일반적으로 관찰되는 경합은 적응형 해시 색인 (AHI) 경합, 버퍼 풀 경합, 디스크 IO 경합입니다.

이 트리거의 구성된 값과 관계없이 단일 세마포어의 최대 대기 시간이 200초를 초과하는 경우에도 캡처가 트리거됩니다.
0 (사용 중지됨) 0 또는
10-10000
트랜잭션
잠금 대기
transactionLockWaitThresholdCount LOCK WAIT 상태의 트랜잭션 수가 구성된 수를 초과하면 캡처를 트리거합니다. 잠금 대기 상태의 트랜잭션 수가 적은 것은 사용량이 많은 시스템에서 정상일 수 있지만, 잠금 대기 수가 지속적으로 높으면 애플리케이션 수준 잠금 경합, 색인이 생성되지 않은 DML, 장기 유휴 트랜잭션, 성능과 처리량을 크게 저하시킬 수 있는 높은 동시 실행 행 경합을 강력하게 나타냅니다. 0 (사용 중지됨) 0 또는
10-10000

가격 책정

성능 캡처는 모든 Cloud SQL 리전에서 추가 비용 없이 사용할 수 있습니다. 기본 데이터베이스 리소스에만 표준 요금이 적용됩니다. 성능 캡처는 Cloud Logging에 로그를 저장하므로 추가 Cloud Logging 스토리지 비용이 발생할 수 있습니다.

Logging에 로그를 저장하는 가격 책정에 대한 자세한 내용은 가격 책정을 참조하세요.

제한사항

  • 성능 캡처를 사용하려면 쿼리 통계를 사용 설정 해야 합니다. 쿼리 통계를 사용 중지하면 성능 캡처도 사용 중지됩니다.
  • 성능 캡처는 MySQL용 Cloud SQL 5.7 이상에서만 사용할 수 있습니다.

다음 단계