이 페이지에서는 Spanner가 제공하는 CPU 사용률 측정항목을 설명합니다. Google Cloud 콘솔 및 Cloud Monitoring 콘솔에서 이러한 측정항목을 볼 수 있습니다.
CPU 사용률 및 태스크 우선순위
Spanner는 태스크의 소스 및 우선순위를 기준으로 CPU 사용률을 측정합니다.
소스: 태스크는 사용자 또는 시스템 중 하나에 의해 시작될 수 있습니다.
우선순위: 우선순위에 따라 Spanner는 먼저 실행할 태스크를 결정할 수 있습니다. 시스템 태스크의 우선순위는 미리 결정되며 구성할 수 없습니다. 사용자 태스크는 특별히 언급되지 않은 한 높은 우선순위로 실행됩니다. read 및 executeSql과 같은 많은 데이터 요청을 통해 해당 요청에 대해 낮은 우선순위를 지정할 수 있습니다. 예를 들어 이것은 성능 SLO가 엄격하지 않은 일괄 처리, 유지보수, 분석 쿼리를 실행할 때 유용할 수 있습니다.
우선순위가 높은 태스크는 일반적으로 우선순위가 낮은 태스크보다 우선 실행됩니다. Spanner는 우선순위가 낮은 태스크와 경합이 발생하더라도 사용 가능한 CPU 리소스의 최대 100%까지 우선순위가 높은 태스크에 사용되도록 허용합니다. 우선순위가 낮은 시스템 태스크가 단기적으로 지연될 수 있지만 결국은 실행되어야 합니다. 따라서 모든 태스크를 처리하도록 인스턴스에 충분한 컴퓨팅 용량을 프로비저닝해야 합니다.
우선순위가 높은 태스크가 없는 경우 Spanner는 사용 가능한 CPU 리소스를 최대 100%까지 활용하여 우선순위가 낮은 태스크를 더욱 빠르게 완료합니다. 백그라운드 사용량 급증은 문제가 발생했다는 징후가 아니며, 사용자 태스크를 포함하여 우선순위가 낮은 태스크가 우선순위가 높은 태스크에 거의 즉각적으로 리소스를 양보할 수 있습니다.
다음 표는 각 태스크의 예시를 보여줍니다.
사용자 태스크 | 시스템 태스크 | |
---|---|---|
높은 우선순위 | read 또는 executeSql과 같은 데이터 요청을 포함하며, 우선순위 없음 또는 PRIORITY_HIGH가 지정됩니다. | 데이터 분할을 포함합니다. |
중간 우선순위 | 다음 사항을 포함합니다.
|
다음 사항을 포함합니다.
|
낮은 우선순위 | PRIORITY_LOW가 지정된 데이터 요청을 포함합니다. | 다음 사항을 포함합니다.
|
사용 가능한 측정항목
Spanner는 CPU 사용률에 대해 다음과 같은 측정항목을 제공합니다.
평탄화된 CPU 사용률: 각 데이터베이스의 인스턴스 CPU 리소스 사용률에 해당하는 총 CPU 사용률의 이동 평균입니다. 각 데이터 포인트는 이전 24시간의 평균입니다. 이 측정항목을 사용하여 알림을 만들고 장시간(예: 24시간) 동안 CPU 사용량을 분석할 수 있습니다. Google Cloud 콘솔 또는 Cloud Monitoring 콘솔에서 이 측정항목 차트를 이동 평균 24시간으로 확인할 수 있습니다.
우선순위별 CPU 사용률: 우선순위, 사용자가 시작한 태스크, 시스템에서 시작한 태스크별로 그룹화된 인스턴스의 CPU 리소스 사용률에 해당하는 CPU 사용률입니다. 이 측정항목을 사용하여 상위 수준에서 알림을 만들고 CPU 사용량을 분석할 수 있습니다. Google Cloud 콘솔 또는 Cloud Monitoring 콘솔에서 이 측정항목의 차트를 볼 수 있습니다.
작업 유형별 CPU 사용률: 읽기, 쓰기, 커밋 등 사용자가 시작한 작업별로 그룹화된 인스턴스 CPU 리소스 사용률에 해당하는 CPU 사용률입니다. 높은 CPU 사용률 조사에 설명된 대로 이 측정항목을 사용하여 CPU 사용량의 상세 내역을 확인하고 문제를 해결할 수 있습니다. Cloud Monitoring 콘솔에서 이 측정항목의 차트를 만들 수 있습니다.
또한 아래 설명처럼 Cloud Monitoring 콘솔을 사용하여 CPU 사용률 알림을 만들 수도 있습니다.
CPU 사용률 높음에 대한 알림
다음 테이블에서는 단일 리전 및 멀티 리전 인스턴스의 최대 CPU 사용량에 대한 권장사항을 지정합니다. 이 수치는 단일 리전 인스턴스의 전체 영역 또는 멀티 리전 인스턴스의 전체 리전이 손실되는 경우 트래픽을 계속 처리할 수 있도록 인스턴스에 충분한 컴퓨팅 용량을 제공하기 위한 것입니다.
측정항목 | 단일 리전 인스턴스의 최댓값 | 멀티 리전 인스턴스의 리전별 최댓값 |
---|---|---|
우선순위 높음 전체 | 65% | 45% |
24시간 평탄화 집계 | 90% | 90% |
권장 최댓값을 초과하지 않게 하려면 Cloud Monitoring에서 알림을 만들어 우선순위가 높은 CPU 사용률과 평균 CPU 사용률을 24시간 추적합니다.
CPU 사용률은 요청 지연 시간에 영향을 미칠 수 있습니다. 개별 백엔드 서버에 과부하가 발생하면 요청 지연 시간이 길어집니다. 애플리케이션은 벤치마크 및 활성 모니터링을 실행하여 Cloud Spanner가 성능 요구사항을 충족하는지 확인해야 합니다.
따라서 성능에 민감한 애플리케이션의 경우 다음 섹션에 설명된 기술을 사용하여 CPU 사용률을 추가로 줄여야 할 수 있습니다.
CPU 사용률 100% 초과
일부 경우에는 Spanner 인스턴스의 CPU 사용률이 100%를 초과할 수 있습니다. 즉, 인스턴스에 구성된 것보다 많은 CPU 리소스가 인스턴스에 사용됩니다.
갑작스러운 요청 트래픽 증가와 같이 CPU 사용률이 급증하는 기간 중에는 보다 효율적이고 예측 가능한 성능을 제공하기 위해 CPU 리소스가 100% 넘게 사용될 수 있습니다.
100%를 초과하는 CPU 용량은 보장되지 않으며 일반 데이터베이스 작업에 사용되지 않아야 합니다.
100% CPU 사용률을 초과하거나 근접한 상태로 Spanner 인스턴스를 장시간 실행하면 일반 작업 성능이 저하되고 지연 시간이 늘어날 위험이 있습니다. 추가 CPU 리소스는 일관적인 성능을 위해 의존할 수 있는 안전한 메커니즘이 아닙니다.
이 추가 CPU 사용률에 대해서는 고객에게 청구되지 않습니다.
CPU 사용률 줄이기
이 섹션에서는 인스턴스의 CPU 사용률을 줄이는 방법을 설명합니다.
일반적으로 인스턴스의 컴퓨팅 용량을 늘리는 방법부터 시도해 보는 것이 좋습니다. 컴퓨팅 용량을 늘린 후 높은 CPU 사용률의 근본 원인을 조사하고 해결할 수 있습니다.
컴퓨팅 용량 늘리기
권장되는 CPU 사용률 최댓값을 초과하는 경우 인스턴스가 계속 원활하게 작동하도록 인스턴스의 컴퓨팅 용량을 늘리는 것이 좋습니다. 이 프로세스를 자동화하려면 CPU 사용률을 모니터링하는 애플리케이션을 만든 다음 필요에 따라 UpdateInstance
메서드를 사용하여 컴퓨팅 용량을 늘리거나 줄이면 됩니다.
필요한 컴퓨팅 용량을 판단하려면 24시간 평탄화 평균뿐만 아니라 우선순위가 높은 CPU 최대 사용률도 고려합니다. 항상 충분한 수의 컴퓨팅 용량을 할당하여 CPU 사용률을 권장되는 최댓값 아래로 유지하세요. 앞에서 설명한 것처럼 워크로드 급증을 수용할 수 있도록 성능에 민감한 애플리케이션에 추가 컴퓨팅 용량을 할당해야 할 수 있습니다.
컴퓨팅 용량이 충분하지 않으면 Spanner는 우선순위에 따라 태스크를 연기합니다. 데이터베이스 압축, 스키마 변경 유효성 검사와 같이 우선순위가 낮은 시스템 태스크는 사용자 태스크보다 뒤로 미뤄도 무방합니다. 그러나 이러한 태스크는 인스턴스의 정상적인 작동에 필수적이므로 Spanner는 이를 무한정 연기할 수는 없습니다. Spanner는 컴퓨팅 리소스 부족으로 인해 특정 기간(몇 시간 내지 하루) 이내에 우선순위가 낮은 태스크를 완료할 수 없는 경우 시스템 태스크의 우선순위를 높일 수 있습니다. 이 변경 사항은 사용자 태스크의 성능에 영향을 줍니다.
점검 도구를 사용한 추가 조사
작업 유형별 CPU 사용률 측정항목에서 특정 유형의 작업이 높은 CPU 사용률에 기여하고 있는 것으로 나타나면 Spanner 점검 도구를 사용하여 문제를 해결합니다. 자세한 내용은 높은 CPU 사용률 조사를 참조하세요.
다음 단계
- Google Cloud 콘솔 또는 Cloud Monitoring 콘솔을 사용하여 인스턴스 모니터링하기
- Spanner CPU 사용률에 대한 알림 만들기
- Spanner 인스턴스의 컴퓨팅 용량을 변경하는 방법 알아보기
긴 지연 시간과 다른 측정항목의 상관관계를 확인하는 방법 알아보기
높은 CPU 사용률 조사를 참조하여 특정 작업 유형으로 인해 높은 CPU 사용량 문제를 해결하는 방법 알아보기