다음을 통해 공유


벤치마킹 프레임워크를 사용하여 NoSQL 성능에 대한 Azure Cosmos DB 측정

데이터 워크로드에 사용할 데이터베이스 유형에 대한 선택 항목이 그 어느 때보다 많아졌습니다. 데이터베이스를 선택하는 주요 요소 중 하나는 데이터베이스 또는 서비스의 성능이지만 벤치마킹 성능은 번거롭고 오류가 발생할 수 있습니다. Azure Databases의 벤치마킹 프레임워크는 일반적인 모범 사례를 구현하는 낮은 마찰 레시피를 사용하여 인기 있는 오픈 소스 벤치마킹 도구를 사용하여 성능을 측정하는 프로세스를 간소화합니다. NoSQL용 Azure Cosmos DB에서 프레임워크는 Java SDK에 대한 모범 사례를 구현하고 오픈 소스 YCSB 도구를 사용합니다. 이 가이드에서는 이 벤치마킹 프레임워크를 사용하여 읽기 워크로드를 구현하여 프레임워크를 숙지합니다.

필수 조건

Azure Cosmos DB 계정 리소스 만들기

먼저 기존 API for NoSQL 계정에 데이터베이스 및 컨테이너를 만듭니다.

  1. Azure Portal에서 기존 NoSQL용 API 계정으로 이동합니다.

  2. 리소스 메뉴에서 데이터 탐색기를 선택합니다.

    리소스 메뉴에 강조 표시된 데이터 탐색기 옵션의 스크린샷.

  3. 데이터 탐색기 페이지의 명령 모음에서 새 컨테이너 옵션을 선택합니다.

    데이터 탐색기 명령 모음의 새 컨테이너 옵션 스크린샷

  4. 새 컨테이너 대화 상자에서 다음 설정을 사용하여 새 컨테이너를 만듭니다.

    Setting 가치
    데이터베이스 ID ycsb
    데이터베이스 처리량 유형 수동
    데이터베이스 처리량 400
    컨테이너 ID usertable
    파티션 키 /id

    데이터 탐색기 페이지의 새 컨테이너 대화 상자 스크린샷

Azure에 벤치마킹 프레임워크 배포

이제 Azure Resource Manager 템플릿 을 사용하여 기본 읽기 레시피를 사용하여 벤치마킹 프레임워크를 Azure에 배포합니다.

  1. 이 링크에서 사용할 수 있는 Azure Resource Manager 템플릿을 사용하여 벤치마킹 프레임워크를 배포합니다.

    Azure에 배포 단추.

  2. 사용자 지정 배포 페이지에서 다음과 같은 매개 변수

    매개 변수 값이 채워진 사용자 지정 배포 페이지의 스크린샷

  3. 검토 + 만들기를 선택한 다음 만들기를 선택하여 템플릿을 배포합니다.

  4. 배포가 완료되기를 기다립니다.

    팁 (조언)

    배포를 완료하는 데 5~10분이 걸릴 수 있습니다.

벤치마크 결과 보기

이제 기존 Azure Storage 계정을 사용하여 벤치마크 작업의 상태를 확인하고 집계된 결과를 볼 수 있습니다. 상태는 스토리지 테이블을 사용하여 저장되고 결과는 CSV 형식을 사용하여 스토리지 Blob으로 집계됩니다.

  1. Azure Portal에서 기존 Azure Storage 계정으로 이동합니다.

  2. ycsbbenchmarkingmetadata라는 스토리지 테이블로 이동하고 파티션 키가 ycsb_sql있는 엔터티를 찾습니다.

    스토리지 계정의 ycsbbenchmarkingMetadata 테이블 스크린샷

  3. JobStatus 테이블 엔터티의 필드를 관찰합니다. 작업의 초기 상태는 Started이며, JobStartTime 속성에는 타임스탬프가 포함되어 있지만 JobFinishTime 속성에는 포함되어 있지 않습니다.

  4. 작업의 상태가 Finished 이고 JobFinishTime 속성에 타임스탬프가 포함될 때까지 기다립니다.

    팁 (조언)

    작업을 완료하는 데 약 20-30분이 걸릴 수 있습니다.

  5. ycsbbenchmarking-*의 접두사를 사용하여 동일한 계정의 스토리지 컨테이너로 이동합니다. 도구 출력과 진단 Blob을 확인해 보세요.

    벤치마킹 도구의 컨테이너 및 출력 Blob 스크린샷

  6. aggregation.csv Blob을 열고 콘텐츠를 관찰합니다. 이제 모든 벤치마크 클라이언트의 집계된 결과가 포함된 CSV 데이터 세트가 있어야 합니다.

    집계 결과 Blob의 콘텐츠 스크린샷

    Operation,Count,Throughput,Min(microsecond),Max(microsecond),Avg(microsecond),P9S(microsecond),P99(microsecond)
    READ,180000,299,706,448255,1079,1159,2867
    

조리법

Azure Databases의 벤치마킹 프레임워크에는 "1-Click" 환경을 위해 기본 벤치마킹 도구로 전달되는 워크로드 정의를 캡슐화하는 레시피가 포함되어 있습니다. 워크로드 정의는 Azure Cosmos DB 팀과 벤치마킹 도구 팀이 게시한 모범 사례를 기반으로 설계되었습니다. 레시피는 일관된 결과를 위해 테스트되고 검증되었습니다.

GitHub 리포지토리의 모든 읽기 및 쓰기 레시피에 대해 다음 대기 시간을 확인할 수 있습니다.

  • 읽기 대기 시간

    평균 1밀리초에서 2밀리초 정도의 일반적인 읽기 대기 시간의 다이어그램.

  • 쓰기 대기 시간

    평균 약 4밀리초의 일반적인 쓰기 대기 시간의 다이어그램.

일반적인 문제

이 섹션에는 벤치마킹 도구를 실행할 때 발생할 수 있는 일반적인 오류가 포함되어 있습니다. 도구에 대한 오류 로그는 일반적으로 Azure Storage 계정 내의 컨테이너에서 사용할 수 있습니다.

스토리지 계정의 컨테이너 및 Blob 스크린샷

  • 스토리지 계정에서 로그를 사용할 수 없는 경우 이 문제는 일반적으로 잘못되었거나 누락된 스토리지 연결 문자열로 인해 발생합니다. 이 경우 이 오류는 클라이언트 가상 머신의 /home/benchmarking 폴더 내 agent.out 파일에 나열됩니다.

    Error while accessing storage account, exiting from this machine in agent.out on the VM
    
  • 이 오류는 Azure Cosmos DB 엔드포인트 URI가 잘못되었거나 연결할 수 없는 경우 클라이언트 VM 및 스토리지 계정 모두에서 agent.out 파일에 나열됩니다.

    Caused by: java.net.UnknownHostException: rtcosmosdbsss.documents.azure.com: Name or service not known 
    
  • 이 오류는 Azure Cosmos DB 키가 잘못된 경우 클라이언트 VM 및 스토리지 계정 모두에서 agent.out 파일에 나열됩니다.

    The input authorization token can't serve the request. The wrong key is being used….
    

다음 단계

  • 시작 가이드를 사용하여 벤치마킹 도구에 대해 자세히 알아보세요.