측정항목을 사용하여 지연 시간 진단

이 페이지에서는 Spanner에서 제공하는 지연 시간 측정항목을 설명합니다. 애플리케이션의 지연 시간이 길면 이러한 측정항목을 사용하여 문제를 진단하고 해결하세요.

Google Cloud 콘솔 및 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 console을 사용하세요. 측정항목을 자세히 살펴보고 지연 시간과 다른 측정항목 간의 상관관계를 확인하려면 Cloud Monitoring 콘솔을 사용하세요.

총 지연 시간이 길고 Spanner 지연 시간이 짧은 경우

애플리케이션의 지연 시간이 예상보다 길지만 Spanner의 지연 시간 측정항목은 총 엔드 투 엔드 지연 시간보다 훨씬 짧다면 애플리케이션 코드에 문제가 있을 수 있습니다. 애플리케이션의 성능 문제로 인해 일부 코드 경로가 느려지는 경우 각 요청의 전체 엔드 투 엔드 지연 시간이 늘어날 수 있습니다.

이 문제를 확인하려면 애플리케이션을 벤치마킹하여 예상보다 느린 코드 경로를 식별하세요.

Spanner와 통신하는 코드를 주석 처리한 후 총 지연 시간을 다시 측정할 수도 있습니다. 총 지연 시간이 크게 변경되지 않는다면 Spanner가 긴 지연 시간의 원인이 아닐 가능성이 높습니다.

총 지연 시간이 길고 Spanner 지연 시간도 긴 경우

애플리케이션의 지연 시간이 예상보다 길고 Spanner 지연 시간 측정항목도 길다면 몇 가지 원인이 있을 수 있습니다.

  • 인스턴스에 더 많은 컴퓨팅 용량이 필요합니다. 인스턴스에 CPU 리소스가 부족하고 CPU 사용률이 권장 최댓값을 초과할 경우 Spanner에서 요청을 신속하게 효율적으로 처리하지 못할 수 있습니다.

  • 일부 쿼리로 인해 CPU 사용률이 높아지는 경우. 쿼리가 쿼리 매개변수 및 보조 색인과 같은 효율성을 향상시키는 Spanner 기능을 사용하지 않거나 조인 또는 다른 CPU를 많이 사용하는 작업을 다수 포함하고 있으면 인스턴스의 CPU 리소스 중 상당 부분을 사용할 수 있습니다.

이러한 문제를 확인하려면 Cloud Monitoring 콘솔을 사용하여 높은 CPU 사용률과 긴 지연 시간의 상관관계를 확인하세요. 또한 인스턴스의 쿼리 통계를 확인하여 동일한 기간에 CPU 집약적인 쿼리가 있는지 파악하세요.

CPU 사용률과 지연 시간이 동시에 높다고 판단되면 문제를 해결하기 위한 조치를 취하세요.

다음 단계