이 페이지에서는 Spanner 요청과 관련된 상위 수준 구성요소를 간략하게 설명하고 각 구성요소가 지연 시간에 어떤 영향을 미치는지 보여줍니다.
Spanner API 요청
Spanner API 요청을 전송하는 데 사용되는 상위 구성요소는 다음과 같습니다.
Spanner 클라이언트 라이브러리: gRPC 기반의 추상화 레이어를 제공하고 세션 관리, 트랜잭션, 재시도와 같은 서버 통신 세부정보를 처리합니다.
Google 프런트엔드(GFE): Spanner를 포함한 모든 Google Cloud 서비스에 공통적으로 해당되는 인프라 서비스입니다. GFE는 모든 전송 계층 보안(TLS) 연결이 중지되었는지 확인하고 서비스 거부 공격에 대한 보호를 적용합니다. GFE에 관한 자세한 내용은 Google 프런트엔드 서비스를 참고하세요.
Spanner API 프런트엔드: API 요청에 대한 다양한 검사(인증, 승인, 할당량 확인 포함)를 수행하고 세션과 트랜잭션 상태를 유지합니다.
Spanner 데이터베이스: 데이터베이스에 대한 읽기 및 쓰기를 실행합니다.
Spanner에 대한 리모트 프로시져 콜을 수행하면 Spanner 클라이언트 라이브러리가 API 요청을 준비합니다. 그런 다음 API 요청이 GFE와 Spanner API 프런트엔드를 모두 통과한 후 Spanner 데이터베이스에 도달합니다.
여러 구성요소와 데이터베이스 간의 요청 지연 시간을 측정하고 비교하면 문제를 일으키는 구성요소를 확인할 수 있습니다. 이러한 지연 시간에는 클라이언트 왕복, GFE, Spanner API 요청, 쿼리 지연 시간이 포함됩니다.
다음 섹션에서는 이전 다이어그램에 표시된 각 지연 시간 유형을 설명합니다.
클라이언트 왕복 지연 시간
클라이언트 왕복 지연 시간은 클라이언트가 GFE 및 Spanner API 프런트엔드를 통해 데이터베이스로 전송한 Spanner API 요청의 첫 번째 바이트와 클라이언트가 데이터베이스에서 수신한 응답의 마지막 바이트 사이의 시간(밀리초)입니다.
grpc.io/client/roundtrip_latency
측정항목은 전송된 API 요청의 첫 번째 바이트와 수신된 응답의 마지막 바이트 사이의 시간을 제공합니다.
이 구성요소의 지연 시간을 캡처하고 시각화하려면 OpenTelemetry를 사용하여 클라이언트 왕복 지연 시간 캡처 또는 OpenCensus 사용을 참고하세요.
GFE 지연 시간
Google 프런트엔드(GFE) 지연 시간은 Google 네트워크에서 클라이언트의 리모트 프로시져 콜을 수신한 후 GFE가 응답의 첫 번째 바이트를 수신할 때까지의 시간(밀리초)입니다. 이 지연 시간은 TCP/SSL 핸드셰이크를 포함하지 않습니다.
Spanner의 모든 응답에는 REST 또는 gRPC에 관계없이 GFE와 백엔드(Spanner 서비스) 사이에 요청부터 응답까지 소요된 총 시간이 포함된 헤더가 있습니다. 이렇게 하면 클라이언트와 Google 네트워크 간의 지연 시간이 발생하는 원인을 더 잘 파악할 수 있습니다.
spanner/gfe_latency
측정항목은 Spanner 요청의 GFE 지연 시간을 캡처하고 노출합니다.
이 구성요소의 지연 시간을 캡처하고 시각화하려면 OpenTelemetry를 사용하여 GFE 지연 시간 캡처 또는 OpenCensus 사용을 참고하세요.
Spanner API 요청 지연 시간
Spanner API 요청 지연 시간은 Spanner API 프런트엔드에서 수신한 요청의 첫 번째 바이트와 Spanner API 프런트엔드에서 전송한 응답의 마지막 바이트 간의 시간(초)입니다. 이 지연 시간에는 Spanner 백엔드와 API 레이어 모두에서 API 요청을 처리하는 데 필요한 시간이 포함됩니다. 그러나 Spanner 클라이언트와 서버 간의 네트워크 또는 역방향 프록시 오버헤드는 이 지연 시간에 포함되지 않습니다.
spanner.googleapis.com/api/request_latencies
측정항목은 Spanner 요청의 Spanner API 프런트엔드 지연 시간을 캡처하고 노출합니다.
이 구성요소의 지연 시간을 캡처하고 시각화하려면 OpenTelemetry를 사용하여 Spanner API 요청 지연 시간 캡처 또는 OpenCensus 사용을 참고하세요.
쿼리 지연 시간
쿼리 지연 시간은 Spanner 데이터베이스에서 SQL 쿼리를 실행하는 데 걸리는 시간(밀리초)입니다.
쿼리 지연 시간은 executeSql API에 사용할 수 있습니다.
QueryMode
매개변수가 PROFILE
로 설정된 경우 Spanner의 ResultSetStats
가 응답에 제공됩니다.
QueryMode
를 PROFILE
로 설정하면 쿼리 계획과 실행 통계가 결과와 함께 반환됩니다. 또한 ResultSetStats
에는 Spanner 데이터베이스에서 쿼리 실행의 경과 시간이 포함됩니다.
이 구성요소의 지연 시간을 캡처하고 시각화하려면 OpenTelemetry를 사용하여 쿼리 지연 시간 캡처 또는 OpenCensus 사용을 참고하세요.
다음 단계
- Spanner 구성요소의 지연 시간 포인트 식별 방법 알아보기