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

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

필수 조건

Azure Cosmos DB 계정 리소스 만들기

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

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

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

    Screenshot of the Data Explorer option highlighted in the resource menu.

  3. Data Explorer 페이지의 명령 모음에서 새 컨테이너 옵션을 선택합니다.

    Screenshot of the New Container option in the Data Explorer command bar.

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

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

    Screenshot of the New Container dialog on the Data Explorer page.

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

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

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

    Deploy to Azure button.

  2. 사용자 지정 배포 페이지에서 다음 매개 변수를 따릅니다

    Screenshot of the Custom Deployment page with parameters values filled out.

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

  4. 배포가 완료될 때가지 기다립니다.

    배포가 완료되려면 5~10분이 걸릴 수 있습니다.

벤치마크 결과 보기

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

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

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

    Screenshot of the ycsbbenchmarkingMetadata table in a storage account.

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

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

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

  5. ycsbbenchmarking-* 접두사를 사용하여 동일한 계정의 스토리지 컨테이너로 이동합니다. 도구의 출력 및 진단 Blob을 관찰합니다.

    Screenshot of the container and output blobs from the benchmarking tool.

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

    Screenshot of the content of the aggregation results 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-클릭" 환경을 위해 기본 벤치마킹 도구에 전달되는 워크로드 정의를 캡슐화하는 레시피가 포함되어 있습니다. 워크로드 정의는 Azure Cosmos DB 팀과 벤치마킹 도구 팀이 게시한 모범 사례를 기반으로 설계되었습니다. 레시피는 일관된 결과를 위해 테스트되고 유효성을 검사했습니다.

GitHub 리포지토리의 모든 읽기 및 쓰기 레시피에 대해 다음과 같은 대기 시간을 볼 수 있습니다.

  • 읽기 대기 시간

    Diagram of the typical read latency averaging around 1 millisecond to 2 milliseconds.

  • 쓰기 대기 시간

    Diagram of the typical write latency averaging around 4 milliseconds.

일반적인 문제

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

Screenshot of container and blobs in a storage account.

  • 스토리지 계정에서 로그를 사용할 수 없는 경우 이 문제는 일반적으로 잘못되었거나 누락된 스토리지 연결 문자열로 인해 발생합니다. 이 경우 이 오류는 클라이언트 가상 머신의 /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….
    

다음 단계

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