핫 태블릿

성능 문제를 해결하기 위해 Bigtable은 클러스터에서 핫 태블릿을 식별하고 관찰할 수 있는 기능을 제공합니다. 이 페이지에서는 핫 태블릿, 핫 태블릿 목록을 가져오는 방법, 핫 태블릿 식별이 도움이 되는 상황을 설명합니다. 이 페이지를 읽기 전에 Bigtable 개요를 읽어야 합니다.

핫 태블릿 목록을 가져오는 데 사용하는 메서드의 이름은 사용되는 언어에 따라 다릅니다. 이 문서에서는 편의상 이 메서드를 RPC Cloud Bigtable Admin API 이름인 ListHotTablets로 지칭합니다. 다음을 사용하여 핫 태블릿 목록을 가져올 수 있습니다.

핫 태블릿을 식별하면 다음과 같은 태스크를 수행하는 데 도움이 됩니다.

핫 태블릿 이해하기

Bigtable 테이블은 태블릿이라고 하는 연속 행 블록으로 샤딩되어 쿼리 워크로드를 분산할 수 있습니다. 각 태블릿은 노드와 연결되며 이러한 행의 작업은 노드에서 수행됩니다. 성능을 최적화하기 위해 액세스 패턴에 따라 태블릿이 분할되거나 다른 노드로 이동합니다. 사용자 액세스 패턴(읽기, 쓰기, 스캔 작업)에 따라 태블릿이 노드 간에 다시 분산됩니다. 부하 분산에 대한 자세한 내용은 Bigtable의 시간별 데이터 최적화 방법을 참조하세요.

핫 태블릿은 태블릿이 다른 태블릿보다 지나치게 많은 CPU를 사용하기 때문에 노드 CPU의 사용률이 높은 태블릿입니다. 노드 사용량이 균형이 맞지 않으면 지연 시간과 복제 지연이 발생할 수 있습니다.

핫 태블릿이 가장 자주 발생하는 원인 중 하나는 애플리케이션이 테이블에서 서로 가까이 있는 행에 자주 액세스할 때 발생하는 핫스팟입니다. 핫스팟은 애플리케이션의 액세스 패턴을 테이블 전체에 분산하도록 최적화되지 않은 스키마 설계로 인해 발생하는 경우가 많습니다. 핫스팟이 발생하지 않도록 row key를 설계하는 방법은 스키마 설계 권장사항을 참조하세요.

핫 태블릿 목록을 가져오려면 개발자에게 bigtable.viewer 권한이 있는 역할이 할당되어야 합니다.

출력

ListHotTablets 메서드는 인스턴스에서 지정된 클러스터에 대해 다음 데이터를 반환합니다.

  • 태블릿 이름. Bigtable에서 핫 태블릿에 할당한 고유 ID입니다. 이 필드는 gcloud CLI에서 표시되지 않습니다.
  • 테이블. 핫 태블릿과 연결된 테이블의 ID입니다.
  • CPU 사용량. 1분 간격으로 핫 태블릿과 연결된 노드의 평균 CPU 사용률을 백분율로 표시합니다. 이 비율은 시작 시간부터 종료 시간까지 쓰기 CPU와 읽기 CPU의 합계의 평균입니다.
  • 시작 시간. 핫 태블릿 기간의 시작 시간입니다.
  • 종료 시간. 핫 태블릿 기간의 종료 시간입니다.
  • 시작 키. 핫 태블릿의 첫 번째 row key입니다.
  • 종료 키. 핫 태블릿의 마지막 row key입니다. 시작 키와 종료 키가 동일하면 태블릿이 단일 행에 걸쳐 있음을 나타내는 \000 서픽스가 추가됩니다.

키는 태블릿 내에서 사전순으로 정렬되므로 시작 키와 종료 키 사이의 모든 키는 해당 핫 태블릿에 포함됩니다.

핫스팟은 1분 해상도로 계산되며 태블릿이 출력에 다시 표시될 수 있습니다. 즉, 단일 태블릿이 몇 분 동안 핫으로 간주될 수 있습니다.

기본적으로 ListHotTablets은 지난 24시간 동안 검색합니다. 특정 기간 내에서 검색하려면 시작 시간과 종료 시간을 제공합니다.

반환되는 최대 핫 태블릿 수는 50개입니다. 이를 변경하려면 페이지 크기를 제공합니다.

클러스터에 핫 태블릿이 없으면 메서드에서 빈 목록을 반환합니다.

gcloud CLI 사용 예시

이 예시를 복사하기 전에 gcloud CLI를 설치합니다.

특정 클러스터의 핫 태블릿 목록을 보려면 Cloud Shell 또는 로컬 터미널 창에서 hot-tablets list 명령어를 실행합니다.

  gcloud bigtable hot-tablets list CLUSTER_ID --instance INSTANCE_ID

다음을 바꿉니다.

  • CLUSTER_ID: 클러스터의 영구 식별자
  • INSTANCE_ID: 인스턴스의 영구 식별자

클러스터의 태블릿이 핫인 경우 터미널에 다음과 비슷한 출력이 표시됩니다. 클러스터의 핫 태블릿이 CPU 사용량을 기준으로 내림차순으로 나열됩니다.

TABLE      CPU_USAGE  START_TIME                 END_TIME                   START_KEY            END_KEY
test-data  89.3       2021-12-14T01:19:57+00:00  2021-12-14T01:20:57+00:00  user29333893046…    user29333893046…
test-data  22.8       2021-12-14T01:04:59+00:00  2021-12-14T01:06:59+00:00  user29333893046…    user29345657428…
test-data  20.9       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user54519105346…    user545293
test-data  16.5       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user49196524328…    user49206

핫 태블릿 데이터 사용 사례

클러스터에서 핫 태블릿을 식별하면 성능 문제를 해결하는 데 도움이 될 수 있습니다. ListHotTablets 메서드를 Bigtable용 Key Visualizer 진단 도구와 같은 다른 모니터링 도구와 함께 사용할 수 있습니다.

문제가 있는 row key 식별

ListHotTablets을 사용하여 특정 row key와 행 범위를 식별할 수 있습니다. 이렇게 하면 핫스팟을 발생시킬 수 있는 액세스 패턴을 관찰할 수 있습니다.

예를 들어 테이블의 row key 스키마가 해시 기호로 구분된 사용자 ID, 타임스탬프인 [user_id]#[event_timestamp]라고 가정합니다. 핫 태블릿 목록을 가져오면 특정 사용자 ID 또는 이벤트 타임스탬프로 인해 핫스팟이 발생하는지를 확인할 수 있습니다. 액세스 패턴을 식별하면 사용량이 키 공간에서 보다 균등하게 분산되도록 row key 또는 테이블을 재설계하는 등의 추가 작업을 수행할 수 있습니다. 이 예시에서 사용자 ID가 일정하게 증가하여 해당 세션에 핫스팟이 발생하는 경우 사용자 ID를 다른 순서로 할당하거나 범용 고유 식별자(UUID)를 대신 사용할 수 있습니다.

시작 및 종료 row key가 동일하고 종료 row key에 \000 서픽스가 추가된 경우 단일 행 태블릿이 생성됩니다. 이 태블릿이 불균형하게 많은 양의 트래픽을 수신하면 핫스팟이 발생합니다.

분 단위 세분화로 핫스팟 관찰

핫 태블릿 목록을 Key Visualizer의 히트맵과 함께 사용할 수 있습니다. Key Visualizer는 키 공간 액세스 패턴을 전체적으로 관찰하는 데 적합한 도구이며 ListHotTablets은 더 큰 세분화를 제공합니다.

Key Visualizer에서 히트맵을 검사한 후 특정 핫스팟을 추가로 살펴볼 수 있습니다. Key Visualizer는 몇 주 동안 실행되므로 핫스팟의 데이터가 15분 간격으로 집계됩니다. 또한 여러 태블릿이 같은 Key Visualizer 키 공간에 결합될 수 있습니다.

Key Visualizer를 사용하여 핫스팟이 발생한 시간 범위를 식별한 후 ListHotTablets을 실행하면 키와 시간 공간 모두 더욱 세분화할 수 있습니다. 더 큰 세분화는 주기적 사용량에 특히 유용합니다. ListHotTablets은 KeyVisualizer에서 식별할 수 없는 단기 핫스팟을 식별할 수 있습니다.

클러스터 내에서 문제가 있는 테이블 식별

Key Visualizer는 테이블 수준에서 작동하므로 테이블 여러 개가 있는 클러스터의 문제를 항상 해결할 수 있는 최선의 선택은 아닙니다. ListHotTablets은 클러스터 수준에서 작동하므로 이를 사용하여 CPU 사용량이 많은 테이블을 식별하고 문제를 좁힐 수 있습니다.

다음 단계