이 페이지에서는 Cloud Spanner에서 제공하는 지연 시간 측정항목을 설명합니다. 애플리케이션의 지연 시간이 길면 이러한 측정항목을 사용하여 문제를 진단하고 해결하세요.
Google Cloud Console 및 Cloud Monitoring 콘솔에서 이러한 측정항목을 볼 수 있습니다.
지연 시간 측정항목 개요
Spanner의 지연 시간 측정항목은 Spanner 서비스에서 요청을 처리하는 데 걸린 시간을 측정합니다. 이 측정항목은 Spanner에서 사용한 CPU 시간이 아닌 실제 경과 시간을 캡처합니다.
이러한 지연 시간 측정항목에는 애플리케이션 레이어 내 지연 시간 및 네트워크 지연 시간과 같은 Spanner 외부에서 발생하는 지연 시간은 포함되지 않습니다. 다른 유형의 지연 시간을 측정하려면 Cloud Monitoring을 사용하여 커스텀 측정항목으로 애플리케이션을 계측하면 됩니다.
Google Cloud 콘솔 및 Cloud Monitoring 콘솔에서 지연 시간 측정항목 차트를 볼 수 있습니다. 읽기 및 쓰기를 모두 포함하는 결합된 지연 시간 측정항목을 보거나 읽기 및 쓰기에 대한 별도의 측정항목을 볼 수 있습니다.
Spanner는 각 요청의 지연 시간에 따라 요청을 백분위수로 그룹화합니다. 50번째 백분위수 및 99번째 백분위수 지연 시간에 대한 지연 시간 측정항목을 볼 수 있습니다.
50번째 백분위수 지연 시간: 모든 요청 중 가장 빠른 50%의 최대 지연 시간(초). 예를 들어 50번째 백분위수 지연 시간이 0.5초인 경우 Spanner에서 0.5초 이내에 요청의 50%를 처리한 것입니다.
이 측정항목을 중간 지연 시간이라고도 합니다.
99번째 백분위수 지연 시간: 가장 빠른 99% 요청의 최대 지연 시간(초). 예를 들어 99번째 백분위수 지연 시간이 2초인 경우 Spanner에서 2초 이내에 요청의 99%를 처리한 것입니다.
지연 시간 및 초당 작업 수
인스턴스가 일정 기간 동안 소수의 요청을 처리할 경우 해당 기간 동안의 50번째 및 99번째 백분위수 지연 시간은 인스턴스의 전반적인 성능을 나타내는 유의미한 지표가 아닙니다. 이러한 조건에서는 아주 약간의 이상치로도 지연 시간 측정항목이 대폭 변경될 수 있습니다.
예를 들어 인스턴스가 한 시간 동안 100개의 요청을 처리한다고 가정해보겠습니다. 이 경우 해당 시간 동안 인스턴스의 99번째 백분위수 지연 시간은 가장 느린 요청을 처리하는 데 걸리는 시간입니다. 단일 요청을 기반으로 한 지연 시간 측정은 의미가 없습니다.
지연 시간 문제를 진단하는 방법
다음 섹션에서는 애플리케이션의 긴 엔드 투 엔드 지연 시간을 초래할 수 있는 몇 가지 일반적인 문제를 진단하는 방법을 설명합니다.
인스턴스의 지연 시간 측정항목을 간단히 살펴보려면 Google Cloud 콘솔을 사용합니다. 측정항목을 자세히 살펴보고 지연 시간과 다른 측정항목 간의 상관관계를 확인하려면 Cloud Monitoring 콘솔을 사용하세요.
총 지연 시간이 길고 Spanner 지연 시간이 짧은 경우
애플리케이션의 지연 시간이 예상보다 길지만 Spanner의 지연 시간 측정항목은 총 엔드 투 엔드 지연 시간보다 훨씬 짧다면 애플리케이션 코드에 문제가 있을 수 있습니다. 애플리케이션의 성능 문제로 인해 일부 코드 경로가 느려지는 경우 각 요청의 전체 엔드 투 엔드 지연 시간이 늘어날 수 있습니다.
이 문제를 확인하려면 애플리케이션을 벤치마킹하여 예상보다 느린 코드 경로를 식별하세요.
Spanner와 통신하는 코드를 주석 처리한 후 총 지연 시간을 다시 측정할 수도 있습니다. 총 지연 시간이 크게 변경되지 않는다면 Spanner가 긴 대기 시간의 원인이 아닐 가능성이 높습니다.
총 지연 시간이 길고 Spanner 지연 시간도 긴 경우
애플리케이션의 지연 시간이 예상보다 길고 Spanner 지연 시간 측정항목도 길다면 몇 가지 원인이 있을 수 있습니다.
인스턴스에 더 많은 컴퓨팅 용량이 필요합니다. 인스턴스에 CPU 리소스가 부족하고 CPU 사용률이 권장 최댓값을 초과할 경우 Spanner에서 요청을 신속하게 효율적으로 처리하지 못할 수 있습니다.
일부 쿼리로 인해 CPU 사용률이 높아지는 경우. 쿼리가 쿼리 매개변수 및 보조 색인와 같은 효율성을 향상시키는 Spanner 기능을 사용하지 않거나 조인 또는 다른 CPU를 많이 사용하는 작업을 다수 포함하고 있으면 인스턴스의 CPU 리소스 중 상당 부분을 사용할 수 있습니다.
이러한 문제를 확인하려면 Cloud Monitoring 콘솔을 사용하여 높은 CPU 사용률과 긴 지연 시간의 상관관계를 확인하세요. 또한 인스턴스의 쿼리 통계를 확인하여 동일한 기간에 CPU 집약적인 쿼리가 있는지 파악하세요.
CPU 사용률과 지연 시간이 동시에 높다고 판단되면 문제를 해결하기 위한 조치를 취하세요.
많은 CPU 집약적 쿼리를 찾지 못한 경우 인스턴스에 컴퓨팅 용량을 추가하세요.
컴퓨팅 용량을 추가하면 더 많은 CPU 리소스가 제공되고 Spanner에서 더 큰 워크로드를 처리할 수 있습니다.
CPU를 많이 사용하는 쿼리를 찾은 경우 쿼리 실행 계획을 검토하여 쿼리가 느려진 이유를 알아본 후 Spanner 관련 SQL 권장사항에 따라 쿼리를 업데이트합니다.
또한 데이터베이스의 스키마 디자인을 검토하고 보다 효율적인 쿼리를 허용하도록 스키마를 업데이트해야 할 수도 있습니다.
다음 단계
- Google Cloud 콘솔 또는 Cloud Monitoring 콘솔을 사용하여 인스턴스를 모니터링합니다.
- 긴 지연 시간과 다른 측정항목의 상관관계를 확인하는 방법을 알아봅니다.
- SQL 권장사항을 준수하고 타임스탬프 경계를 사용하여 읽기 지연 시간을 단축하는 방법을 이해합니다.
- SQL 문을 사용하여 검색할 수 있는 쿼리 통계 테이블의 지연 시간 측정항목에 대해 알아봅니다.
- 인스턴스 구성이 지연 시간에 미치는 영향을 이해합니다.