추출 쿼리가 많은 환경 최적화

이 항목에서는 추출 쿼리가 많은 환경에서 성능을 최적화하고 향상시킬 수 있도록 특정 Tableau Server 토폴로지 및 구성을 설정하는 방법에 대한 지침을 제공합니다.

추출 쿼리가 많은 환경이란? 추출 및 연결된 데이터 원본은 통합 문서, 뷰 및 대시보드를 로드하는 동안 쿼리되므로 많은 양의 쿼리 워크로드가 만들어집니다. 따라서 다수의 추출 및 연결된 데이터 원본이 있는 경우 ‘추출 쿼리가 많은 환경’에 있다고 말할 수 있습니다.

사용하는 환경이 위에 정의된 대로 추출 쿼리가 많은 환경인 경우 다음 몇 개의 섹션이 이 구성이 적절한지 결정하는 데 도움이 될 수 있습니다.

이 구성을 사용하는 경우

이 구성의 핵심 논거: Hyper는 Tableau의 메모리 최적화 데이터 엔진 기술입니다. 빠른 데이터 수집 및 분석 처리에 적합하기 때문에 쿼리가 많은 워크로드를 최적화하는 데 중요한 역할을 합니다. 추출 사용이 증가하면 Tableau Server 클러스터의 전용 노드에 데이터 엔진을 구성하는 것이 좋습니다. 이 구성을 사용하면 Tableau Server에서 인프라를 확장하여 추출 쿼리 시 성능을 최적화할 수 있습니다.

추출 및 연결된 데이터 원본을 사용하여 콘텐츠를 볼 때 Tableau Server 성능은 여러 요인의 영향을 받습니다. 여기서 목표는 서버의 콘텐츠를 볼 때 일관되고 안정적인 쿼리 성능을 달성하는 것입니다. 다음 조건 중 하나가 환경에 적용되는 경우 이 구성을 사용합니다.

  • 통합 문서 로드 시간이 매우 다양하고 통합 문서에 추출 또는 연결된 데이터 원본이 사용됩니다.

  • Tableau Server 배포에서 Creator, Explorer, Viewer(뷰어) 및 추출 기반 콘텐츠 수가 증가하여 효율적인 확장이 필요합니다.

  • 컴퓨터에 파일 저장소가 있는 경우 데이터 엔진과 VizQL 서버 간에 리소스 경합이 발생합니다.
  • 많은 양의 데이터를 분석합니다. 이 구성은 빅 데이터 시나리오의 데이터 활용 및 분석에서 성능을 최적화하는 데 도움이 됩니다. Tableau와 빅 데이터에 대해 자세히 알아보려면 Tableau를 사용하여 빅 데이터 분석에 Hyper 활용(영문)을 참조하십시오.

참고: 서버 측 성능 기록을 사용하여 쿼리 실행 시간을 확인합니다. Tableau의 리소스 사용량을 확인하려면 성능 모니터(Windows 설치) 및 sysstat 또는 vmstat 도구(Linux 설치)를 사용합니다.

이 구성을 사용할 때의 이점

다음은 데이터 엔진 전용 노드를 구성할 때의 주요 이점입니다.

  • 전용 데이터 엔진 노드는 추출 쿼리와 다른 리소스 집약적 워크로드(예: VizQL 서버에서 처리되는 워크로드) 간의 리소스 경합을 줄여줍니다.

  • 시스템의 현재 상태를 고려하여 전용 노드에서 추출 쿼리의 부하를 동적으로 분산함으로써 활용률이 높거나 낮은 노드가 없도록 합니다.
  • 추출 종속 통합 문서를 로드할 때의 사용자 경험에서 보다 일관적인 성능을 제공합니다. 여기서는 개별 쿼리를 개선하는 것보다 일관되고 안정적인 성능을 제공하는 데 중점을 둡니다.

  • 더 많은 리소스가 필요한 Tableau Server 프로세스를 확장하는 것과 관련된 제어가 강화됩니다. VizQL 서버, 데이터 엔진 및 백그라운더가 모두 동일한 노드에서 실행되고 있고 추출 쿼리가 느린 것이 문제라면 이 3개 프로세스와 함께 두 번째 노드를 추가하는 것으로는 성능을 개선하기가 어렵습니다. 이 구성을 사용하면 특히 추출 쿼리 워크로드를 개선하는 노드를 추가할 수 있습니다.

  • 가용성 및 가동 시간을 개선하는 데 도움이 됩니다. 장애 발생 시 전용 데이터 노드 중 하나를 사용할 수 없게 되면 VizQL 서버가 문제 노드의 보류 중인 요청을 다른 전용 데이터 엔진 노드로 라우팅합니다.

  • 데이터 엔진은 컴퓨터에서 사용할 수 있는 최대한 많은 코어를 활용합니다. 따라서 전용 데이터 엔진 노드에 리소스를 추가하여 쿼리 응답 시간을 줄이고 많은 비용을 야기하는 추출 쿼리의 가변성을 완화하거나 전용 데이터 엔진 노드를 추가하여 서버 전체에서 더 많은 추출 쿼리를 사용할 수 있습니다.

  • 데이터 엔진에는 CPU를 시간당 평균 75%로 제한하는 기본 구성이 있습니다. 이는 다른 Tableau Server 프로세스와의 경합을 방지하기 위한 것입니다. 전용 노드에서 데이터 엔진을 실행하는 경우 이 평균을 95%까지 높일 수 있습니다. 이를 설정하는 방법에 대한 자세한 내용은 hyper.srm_cpu_limit_percentage를 참조하십시오.

이 구성을 사용하지 않는 경우

  • 추출 기반 쿼리 로드에 문제가 없는 경우 하드웨어 리소스를 Tableau Server의 다른 부분에 할당할 수 있습니다.

  • 파일 저장소, 데이터 엔진 및 VizQL 서버가 함께 있는 노드에서 데이터 엔진과 VizQL 서버는 리소스 경합을 벌이지 않습니다.

  • 이 구성을 구현하기 전에 VizQL 서버와 파일 저장소가 설치된 데이터 엔진의 CPU 사용량과 파일 저장소와 데이터 엔진이 설치된 노드의 CPU 사용량을 평가하는 것이 좋습니다.

구성

이 구성의 기본적인 목표는 데이터 엔진을 하나 이상의 전용 노드에 배치하는 것입니다.

  • 파일 저장소가 로컬로 설치되는 배포에서는 파일 저장소를 하나 이상의 전용 노드에 구성합니다. 데이터 엔진은 파일 저장소와 동일한 노드에 자동으로 설치됩니다.

  • 외부 파일 저장소를 구성하는 배포에서도 Tableau Server의 전용 노드에 데이터 엔진을 구성할 수 있습니다.

VizQL 서버와 파일 저장소 프로세스를 분리하면 추출 쿼리와 뷰 보기 또는 상호 작용 간의 균형을 맞추고 보다 적절히 관리할 수 있습니다. 이 구성은 추출 쿼리 시 일관된 성능을 달성하는 것을 목표로 합니다.

아래의 구성은 데이터 엔진/파일 저장소 프로세스에 2개의 전용 노드인 노드 5와 노드 6이 있는 구성을 시각적으로 보여줍니다. 이 그림은 파일 저장소를 로컬로 구성하여 데이터 엔진과 파일 저장소 프로세스를 함께 배치한 경우를 보여주는 예입니다.

외부 파일 저장소가 포함된 배포에도 동일한 구성이 작동하지만 이 경우 노드 5와 6에는 데이터 엔진만 구성됩니다.

또한 노드 1에는 리포지토리와 파일 저장소 프로세스도 있습니다. 백업 수행에 필요한 모든 데이터가 노드 1에 있으므로 백업 성능이 개선될 수 있습니다.

하드웨어 지침

이 구성을 최대한 활용하려면 다양한 하드웨어 크기 및 구성으로 실험하여 피크 로드 성능 목표에 가장 적합한 것을 찾아야 합니다. Hyper는 고성능 데이터베이스 기술이며 성능에 영향을 미치는 주요 리소스는 메모리, 코어 및 저장소 I/O입니다. Hyper에서 쿼리를 처리할 때 리소스를 사용하는 방식을 이해하면 하드웨어를 선택하고 서로 다른 구성을 이해하는 데 도움이 됩니다.

  • 메모리: 사용자 또는 백그라운드 프로세스를 위해 추출 기반 쿼리를 처리할 때 Tableau Server는 전용 데이터 엔진 노드를 선택하여 쿼리를 처리합니다. 이 전용 데이터 엔진 노드는 로컬 저장소(대부분의 경우 서버 하드 디스크)에서 메모리로 추출을 복사합니다. 가용 시스템 메모리가 많으면 운영 체제에서 Tableau의 메모리 사용량을 효과적으로 관리할 수 있습니다. 전용 데이터 엔진 노드는 시스템 메모리를 사용하여 실행된 쿼리의 결과 집합을 저장합니다. 결과 집합이 여전히 유효하고 운영 체제가 메모리에서 이 결과 집합을 지우지 않은 경우 메모리의 결과 집합을 재사용할 수 있습니다.

    Tableau Server의 최소 하드웨어 권장 사항은 32GB의 메모리이지만 추출 기반 통합 문서 로드량이 많을 것으로 예상되는 경우 64GB 또는 128GB를 고려해야 합니다. 메모리에 더해 코어와 같은 다른 리소스 제한에 도달하면 최대 128GB 메모리로 수직 확장하는 것보다 추가 64GB의 전용 데이터 엔진 노드로 수평 확장하는 것이 나을 수 있습니다.

    추출을 로컬 저장소에서 메모리로 복사하는 프로세스는 시간이 걸리며 디스크 성능 최적화가 필요할 수 있습니다. 디스크 성능 최적화는 저장소 I/O 섹션에서 다룹니다.

  • 코어: 추출 기반 쿼리를 처리할 때 코어 수는 성능 및 확장성에 영향을 미칠 수 있는 중요한 하드웨어 리소스입니다. CPU 코어는 쿼리를 실행하는 작업을 담당하며 가용 코어가 많으면 실행 시간이 빨라집니다. 일반적으로 코어 수를 두 배로 늘리면 쿼리 실행 시간이 절반으로 줄어듭니다. 예를 들어 현재 4개의 물리적 코어 또는 8개의 vCPU를 활용하는 10초 쿼리는 8개의 물리적 코어 또는 16개의 vCPU로 업그레이드할 경우 5초가 소요됩니다.

    현재 Tableau Server 최소 하드웨어 권장 사항은 8개 코어이지만 배포에서 추출을 활용하는 경우 16개 또는 32개 코어 컴퓨터를 고려하십시오. 메모리 및 I/O에서 병목 현상이 발생하는 경우 가용 코어 수를 늘려도 쿼리 성능이 개선되지 않습니다.

  • 저장소 I/O: Hyper는 추출 저장소 장치의 가용 성능을 활용하여 쿼리 처리 속도를 높이도록 설계되었습니다. SSD(Solid State Drive)와 같이 읽기/쓰기 속도가 높은 고속 디스크 저장소를 선택하는 것이 좋습니다. 현재로서는 NVMe 저장소 프로토콜을 활용하는 SSD가 가장 빠른 속도를 제공합니다.

참고: 전용 데이터 엔진 노드의 리소스 크기는 추출 쿼리 성능에만 영향을 미칩니다. 통합 문서를 로드할 때는 총 VizQL 로드 요청 시간을 구성하는 다른 많은 프로세스가 관련됩니다. 예를 들어 VizQL 서버 프로세스는 데이터 엔진에서 데이터를 가져와서 비주얼리제이션을 렌더링하는 작업을 담당합니다.

기타 성능 조정 및 최적화:

위에 설명된 기본적인 구성 외에도 성능을 최적화하는 데 사용할 수 있는 추가 기능이 있습니다. 아래에 설명된 최적화는 로컬 파일 저장소와 외부 파일 저장소 배포 모두에 적용됩니다.

  • 추출 쿼리 부하 분산: 추출 쿼리의 라우팅 대상을 결정하기 위해 데이터 엔진은 서버 상태 메트릭을 사용합니다. 즉, 데이터 엔진에 사용되는 리소스의 양과 동일한 노드에서 실행되고 있을 수 있는 다른 Tableau 프로세스의 부하를 고려합니다. 시스템 리소스를 평가하는 것에 더해 추출이 노드의 메모리에 이미 있는지 여부를 고려하여 쿼리를 처리할 리소스가 가장 많은 노드로 추출 쿼리를 보냅니다. 이렇게 하면 메모리 효율성 및 디스크 활용률이 개선되고 노드의 메모리에 추출이 중복되지 않습니다. 자세한 내용은 추출 쿼리 부하 분산 도움말 문서를 참조하십시오.

    추출 쿼리 부하 분산 기능은 Tableau Server 버전 2020.2 이상에서 기본적으로 사용됩니다.

  • 노드 역할을 사용한 워크로드 최적화: 서버 관리자는 백그라운더 및 파일 저장소 노드 역할을 사용하여 추출 쿼리 및 추출 새로 고침 실행을 전담할 노드를 유연하게 제어할 수 있습니다. 위의 토폴로지 다이어그램에 언급된 것처럼 특정 데이터 엔진 노드는 추출 쿼리 처리를 전담하고 파일 저장소 및 데이터 엔진 프로세스만 실행합니다. 노드 역할은 Advanced Management를 통해 사용할 수 있습니다. 노드 역할에 대한 자세한 내용은 노드 역할을 통한 작업 부하 관리를 참조하십시오.

아래의 다이어그램에는 위에 설명된 기본 구성과 동일한 토폴로지가 사용되지만 노드 역할이 포함됩니다.

  • 백그라운더 노드 역할의 추출 새로 고침: 노드 3을 extract-refreshes 백그라운더 노드 역할로 설정하면 증가분 새로 고침, 전체 새로 고침 및 암호화/암호 해독 작업만 이 노드에서 실행됩니다. 노드 4를 no-extract-refreshes 백그라운더 노드 역할로 설정하면 추출 새로 고침 이외의 모든 백그라운드 작업이 이 노드에서 실행됩니다. 데이터 서버 및 게이트웨이는 페더레이션된 추출 및 섀도우 추출 사용 시 추출 새로 고침 작업을 돕습니다. 백그라운더 노드 역할에 대한 자세한 내용은 파일 저장소 노드 역할를 참조하십시오.

    또한 노드 1에는 리포지토리와 파일 저장소 프로세스도 있습니다. 백업 수행에 필요한 모든 데이터가 노드 1에 있으므로 백업 성능이 개선될 수 있습니다.

    백그라운더 노드 역할은 Tableau Server 버전 2019.3 이상에서 Advanced Management를 통해 사용할 수 있습니다.

  • 파일 저장소 노드 역할의 추출 쿼리: 전용 데이터 엔진 노드인 노드 5 및 6에는 비주얼리제이션 로드, 구독 및 데이터 기반 알림에 대한 쿼리만 처리하도록 extract-queries 파일 저장소 노드 역할이 있습니다.
  • 파일 저장소 노드 역할의 대화형 추출 쿼리: extract-queries 파일 저장소 노드 역할이 있는 전용 데이터 엔진 노드의 경우 서버 관리자는 특정 전용 데이터 엔진에서 대화형 및 예약 워크로드를 실행하도록 더 제한할 수 있습니다. 이는 다수의 사용자가 통합 문서를 로드하고 상호 작용하는, 구독량이 많은 시간에 유용합니다. 예를 들어 월요일 아침 8시에 1,000개의 구독이 예약되어 있습니다. 많은 사용자가 일과를 시작하면서 동시에 대시보드를 로드합니다. 구독량과 사용자 쿼리량이 결합되면 통합 문서 로드 시간이 느려지고 변동성이 높아집니다. extract-queries-interactive 파일 저장소 노드 역할을 사용하면 대화형 사용자(화면을 보면서 대기 중인 사용자)의 쿼리만 수용할 전용 데이터 엔진 노드를 지정할 수 있습니다. 대화형 워크로드를 우선적으로 처리하도록 지정된 이 전용 데이터 엔진 노드는 많은 양의 경쟁 구독 작업으로부터 보호되므로 보다 일관된 쿼리 시간을 제공합니다. 또한 서버 관리자는 이 노드 역할을 사용하여 증가에 대비할 수도 있습니다. 대화형 워크로드와 예약 워크로드에 대한 전용 데이터 엔진 노드를 독립적으로 추가할 수 있기 때문입니다. 자세한 내용은 파일 저장소 노드 역할를 참조하십시오.

    파일 저장소 노드 역할은 Tableau Server 버전 2020.4 이상에서 Advanced Management를 통해 사용할 수 있습니다.

  • 외부 파일 저장소를 사용한 최적화: 이 기능을 사용하면 Tableau Server 노드의 로컬 디스크를 사용하는 대신 네트워크 공유를 파일 저장소의 저장소로 사용할 수 있습니다. 중앙 집중식 위치의 저장소를 사용하면 파일 저장소 노드 간에 데이터를 복제하는 데 사용되는 네트워크 트래픽의 양을 크게 줄일 수 있습니다. 예를 들어 파일 저장소에서 로컬 디스크를 사용하는 경우 로컬 파일 저장소를 사용하여 1GB의 추출을 새로 고치면 1GB의 데이터가 네트워크에 걸쳐 파일 저장소 프로세스를 실행하는 모든 노드에 복제됩니다. 외부 파일 저장소로 Tableau Server를 구성한 경우 이 1GB의 추출을 네트워크 공유에 한 번만 복사하면 모든 파일 저장소 노드에서 이 단일 복사본에 액세스할 수 있습니다. 저장소를 중앙 집중화하면 파일 저장소 노드에 필요한 로컬 저장소의 총량도 줄어듭니다.

    또한 Tableau Server 백업은 스냅샷 기술을 활용하여 백업을 완료하는 데 소요되는 시간을 대폭 줄여줍니다.

    전용 데이터 엔진 노드 구성 없이도 외부 파일 저장소의 이점을 얻을 수 있으며 파일 저장소 노드 역할 및 추출 쿼리 대화형 노드 역할과 추가 워크로드 관리 기능을 함께 사용할 수 있습니다. 자세한 내용은 Tableau Server 외부 파일 저장소 항목을 참조하십시오.

    외부 파일 저장소는 Tableau Server 버전 2020.1 이상에서 Advanced Management를 통해 사용할 수 있습니다.

     

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!