VM의 AlloyDB Omni에서 성능 결과 해석

문서 버전을 선택합니다.

이 문서에서는 VM에서 AlloyDB Omni의 성능 결과를 해석하는 방법을 설명합니다. 이 문서에서는 사용자가 PostgreSQL에 익숙하다고 가정합니다.

다른 변수를 변경하면서 시간 경과에 따른 처리량을 그래프로 나타내면, 일반적으로 리소스 소진 지점에 도달할 때까지 처리량이 계속 증가하는 모습을 보입니다.

다음 그림은 일반적인 처리량 확장 그래프를 보여줍니다. 클라이언트 수가 증가하면 모든 리소스가 소진될 때까지 워크로드와 처리량도 계속 증가합니다.

클라이언트 수에 따라 처리량을 보여주는 처리량 확장 그래프 클라이언트 수가 증가하면 모든 리소스가 소진될 때까지 처리량도 계속 증가합니다.
**그림 1:** 일반적인 처리량 확장 그래프를 보여주는 그림. 클라이언트 수가 증가하면 모든 리소스가 소진될 때까지 워크로드와 처리량도 계속 증가합니다.

이상적으로는 시스템 부하가 두 배로 늘어나면 처리량도 두 배로 늘어나야 합니다. 그러나 실제로는 리소스 경합 때문에 처리량 증가 폭이 점점 줄어듭니다. 어느 시점에서는 리소스 소진 또는 경합으로 인해 처리량이 더 이상 증가하지 않고 평평해지거나 오히려 감소할 수 있습니다. 처리량 최적화를 목표로 한다면, 이러한 지점을 파악하는 것이 핵심입니다. 이 지점을 기준으로 애플리케이션이나 데이터베이스 시스템을 어디에서 튜닝해야 처리량이 향상되는지 판단할 수 있습니다.

처리량이 평평해지거나 감소하는 일반적인 원인에는 다음이 포함됩니다.

  • 데이터베이스 서버의 CPU 리소스 소진
  • 클라이언트의 CPU 리소스 소진으로 인해 데이터베이스 서버에 추가 작업이 전달되지 않음
  • 데이터베이스 잠금 경합
  • 데이터가 Postgres 버퍼 풀 크기를 초과할 때 발생하는 I/O 대기 시간
  • 스토리지 엔진 사용률에 따른 I/O 대기 시간
  • 클라이언트로 데이터를 반환할 때 발생하는 네트워크 대역폭 병목 현상

지연 시간과 처리량은 반비례합니다. 지연 시간이 늘어나면 처리량은 감소합니다. 이는 직관적으로도 이해할 수 있습니다. 병목 현상이 발생하기 시작하면 작업 시간이 더 오래 걸리며, 시스템은 초당 수행할 수 있는 작업 수가 줄어듭니다.

리소스 경합으로 인한 마찰이 발생하기 전까지 지연 시간이 일정하게 유지되는 것을 보여주는 지연 시간 확장 그래프
그림 2: 일반적인 지연 시간 확장 그래프를 보여주는 그림. 리소스 경합으로 인한 마찰이 발생하기 전까지 지연 시간은 일정하게 유지됩니다.

지연 시간 확장 그래프는 시스템에 가해지는 부하가 증가함에 따라 지연 시간이 어떻게 변하는지를 보여줍니다. 지연 시간은 리소스 경합으로 인한 마찰이 발생하기 전까지는 상대적으로 일정하게 유지됩니다. 이 곡선의 변곡점은 일반적으로 처리량 확장 그래프에서 처리량 곡선이 평평해지는 지점과 일치합니다.

지연 시간을 평가하는 또 다른 유용한 방법은 히스토그램으로 표현하는 것입니다. 이 표현에서는 지연 시간을 버킷으로 묶고 각 버킷에 속하는 요청 수를 집계합니다.

리소스 경합으로 인한 마찰이 발생하기 전까지 지연 시간이 일정하게 유지되는 것을 보여주는 지연 시간 확장 그래프
그림 3: 일반적인 지연 시간 히스토그램을 보여주는 그림. 리소스 경합으로 인한 마찰이 발생하기 전까지 지연 시간은 일정하게 유지됩니다.*

이 지연 시간 히스토그램은 대부분의 요청이 100밀리초 미만이고 일부는 지연 시간이 100밀리초를 초과하는 것을 보여줍니다. 긴 지연 시간 꼬리 부분의 원인을 이해하면 애플리케이션 성능 변화의 원인을 설명하는 데 도움이 됩니다. 지연 시간이 길어지는 꼬리 부분의 원인은 일반적인 지연 시간 확장 그래프에서의 지연 시간 증가 및 처리량 그래프에서의 평탄화와 일치합니다.

지연 시간 히스토그램이 특히 유용한 경우는 애플리케이션에 여러 모달리티가 존재할 때입니다. 모달리티는 일반적인 운영 조건의 집합을 의미합니다. 예를 들어 애플리케이션은 대부분 버퍼 캐시에서 페이지에 액세스합니다. 대부분의 경우 애플리케이션은 기존 행을 업데이트하지만 다른 모드도 존재할 수 있습니다. 때로는 애플리케이션이 스토리지에서 페이지를 가져오거나 새 행을 삽입하거나 잠금 경합을 경험하기도 합니다.

시간이 지남에 따라 애플리케이션이 이러한 다양한 동작 모드에 직면하면, 지연 시간 히스토그램은 이러한 여러 모달리티를 보여줍니다.

리소스 경합으로 인한 마찰이 발생하기 전까지 지연 시간이 일정하게 유지되는 것을 보여주는 지연 시간 확장 그래프
그림 4: 일반적인 바이모달 지연 시간 히스토그램을 보여주는 그림. 리소스 경합으로 인한 마찰이 발생하기 전까지 지연 시간은 일정하게 유지됩니다.

이 그림은 대부분의 요청이 100밀리초 미만에서 처리되지만 401~500밀리초에 또 다른 요청 집합이 있는 일반적인 바이모달 히스토그램을 보여줍니다. 이 두 번째 모달리티의 원인을 이해하면 애플리케이션 성능을 개선하는 데 도움이 될 수 있습니다. 모달리티가 2개 이상일 수도 있습니다.

두 번째 모달리티는 정상적인 데이터베이스 작업, 이기종 인프라 및 토폴로지 또는 애플리케이션 동작 등으로 인해 발생할 수 있습니다. 고려해야 할 예시는 다음과 같습니다.

  • 대부분의 데이터 액세스는 PostgreSQL 버퍼 풀에서 이루어지지만 일부는 스토리지에서 발생
  • 특정 클라이언트에서 데이터베이스 서버까지 네트워크 지연 시간 차이
  • 입력값이나 시간대에 따라 서로 다른 작업을 수행하는 애플리케이션 로직
  • 간헐적인 잠금 경합
  • 클라이언트 활동 급증