Couchbase가 JSON 데이터 쿼리를 위해 제공하는 주요 기능 중 하나는 N1QL 언어입니다. N1QL을 사용하면 익숙한 SQL 문을 사용하여 JSON 문서의 내용에 액세스하고 수정할 수 있습니다. 새 애플리케이션의 개발 단계에서 스트레스 테스트 시나리오에서 응답 시간 및 동시성 측면에서 새 애플리케이션이 요구되는 SLA를 충족하는지 확인하기 위해 특정 프로덕션 워크로드를 시뮬레이션해야 하는 경우가 종종 있습니다. 일반적으로 버킷에 있는 JSON 문서의 구조는 이미 정의되어 있으며 기존 프로덕션 N1QL 쿼리는 미리 알려져 있습니다. 새 애플리케이션 벤치마킹의 일환으로, 기존 워크로드와 새로 추가된 N1QL 워크로드를 모두 정의하고 선택적으로 매개변수를 설정한 다음, 다양한 수준의 동시성으로 해당 워크로드를 실행하고 쿼리 성능을 측정해야 합니다.

이 블로그 글에서는 이러한 노력에 도움이 될 수 있는 Apache JMeter 도구에 대해 설명하고자 합니다. 이 데모 동영상도 시청하실 수 있습니다. 여기.

Apache JMeter

Apache JMeter는 무료 오픈 소스 자바 기반 애플리케이션으로 웹 애플리케이션, 데이터베이스, SOAP 및 REST 웹 서비스, FTP, LDAP 및 메일 서버, TCP 및 SMTP 프로토콜의 종합적인 성능 테스트를 설계하고 실행하는 데 사용됩니다. JMeter는 서버의 과중한 워크로드를 에뮬레이션하고 다양한 테스트 시나리오에서 성능을 분석하는 데 도움을 줄 수 있습니다. JMeter는 평균, 최소 및 최대 응답 시간, 표준 편차, 처리량 등과 같은 다양한 성능 메트릭을 측정하면서 테스트를 설계하고 실행하는 데 사용되는 GUI와 함께 제공됩니다. 테스트 계획 요소(스레드 그룹, 리스너, 샘플러 등)를 테스트 계획에 추가하는 작업은 트리에서 요소를 마우스 오른쪽 버튼으로 클릭하고 "추가" 목록으로 이동합니다. JMeter에서 제공하는 기능 중 제가 가장 좋아하는 기능 중 하나는 특정 워크로드를 실행하는 동시 스레드 수를 쉽게 변경할 수 있는 기능입니다. JMeter에서 테스트 시나리오를 설계한 후에는 파일에 저장할 수 있습니다. .jmx 확장자를 추가하세요. 로드 테스트 및 최적의 결과를 얻으려면 이미 생성된 테스트 시나리오를 비-GUI CLI 모드에서 다음을 제공하여 실행하는 것이 좋습니다. .jmx 파일을 JMeter 실행 파일에 추가합니다.

다음에서 다운로드하여 JMeter 기능에 대해 자세히 알아볼 수 있습니다. https://jmeter.apache.org/ 튜토리얼/문서를 읽습니다.

테스트 시나리오 설정 

제 데모에서는 Mac에서 JMeter와 Couchbase 서버를 모두 실행하고 있습니다. "travel-sample" 버킷에 대해 N1QL 문을 사용하여 두 개의 간단한 워크로드를 정의했습니다. "워크로드 1 - 읽기"라는 제목의 첫 번째 워크로드는 아래 그림과 같이 각 스레드가 10개의 쿼리 풀에서 무작위로 N1QL 쿼리를 선택하는 5개의 동시 스레드를 실행합니다. 테스트 시나리오에서는 120초 동안 "워크로드 1 - 읽기"의 목표 속도를 유지할 계획입니다.

테스트를 실행하기 전에 "HTTP 권한 부여 관리자"를 통해 Couchbase 서버에 대한 연결을 인증해야 합니다.

WHERE 절에 매개 변수를 적용하는 방법을 설명하기 위해 국가, 낮음 및 높음 ID 범위로 "Select 3" 쿼리를 매개 변수화했습니다. 이러한 매개 변수는 countries.dat 파일에서 가져옵니다. 아래와 같이 "CSV 데이터 세트 구성" 테스트 요소를 통해 N1QL 쿼리를 매개변수화할 수 있습니다.

각 N1QL 문은 "HTTP 요청" 샘플러에서 POST 메서드를 통해 Couchbase에 제출됩니다.

두 번째 워크로드 "워크로드 2 - CRUD"에는 간단한 삽입, 3 선택, 업데이트 및 삭제 작업이 있습니다. 테스트의 목표는 두 번째 워크로드 "워크로드 2 - CRUD"를 독립적으로(일명 단독으로) 10회의 반복을 수행하는 1개 스레드를 대신하여 실행한 다음 "워크로드 1 - 읽기"를 병렬로 실행하는 경우의 성능 특성을 측정하는 것입니다. 각 워크로드에 대해 정의된 쿼리는 개별적으로 실행될 때 응답 시간이 1초 미만에서 수 초에 이르는 다양한 복잡성과 성능 프로필을 가집니다.

테스트 실행 및 성능 측정 

테스트 시나리오를 정의한 후에는 상단 메뉴의 녹색 시작 버튼을 누르거나 jmeter 실행 스크립트에 .jmx 파일을 제공하여 JMeter 테스트를 실행하기만 하면 되었습니다. 성능 결과를 측정하고 시각화하기 위해 "워크로드 2 - CRUD" 아래에 여러 리스너를 추가했습니다. "요약 보고서" 리스너는 테스트 및 각 개별 N1QL 문에 대한 요약 통계를 제공합니다. "결과 트리 보기"는 디버깅 목적으로 각 샘플의 상태, 요청 및 응답 데이터를 확인하는 데 사용할 수 있습니다. JMeter에는 다른 많은 리스너가 있습니다. 독립형으로 실행했을 때의 "워크로드 2 - CRUD" 성능 결과는 밀리초 단위로 측정된 응답 시간과 함께 아래에 표시되어 있습니다. 이 실행 중에 첫 번째 워크로드 "워크로드 1 - 읽기"가 비활성화되었음을 알 수 있습니다. 테스트 요소를 마우스 오른쪽 버튼으로 클릭하고 '비활성화' 옵션을 선택하면 테스트 계획의 특정 부분을 쉽게 비활성화할 수 있습니다.

다음 실행 중에 두 워크로드가 모두 활성화되었고, 특히 더 복잡한 '조인을 통한 선택' 쿼리의 경우 평균 경과 시간이 600ms에서 거의 2.6초로 급증하는 등 응답 시간의 차이를 즉시 확인할 수 있었습니다. 물론 Mac에서 여러 스레드가 실행 중일 때 CPU가 최대로 사용되었으므로 이 수치는 설명용으로만 제공되었습니다.

테스트 결과는 아래와 같이 '응답 시간 그래프' 리스너로 시각화할 수도 있습니다. 노란색 선으로 표시된 '조인으로 선택' 쿼리의 경과 시간은 첫 번째 워크로드가 완료된 후 아래로 떨어졌습니다.

결론

스트레스 테스트를 실행하고 성능을 벤치마킹하는 데 사용할 수 있는 도구는 JMeter뿐이 아닙니다. Couchbase는 몇 가지 다른 도구를 제공합니다. cbc-pillowfight 그리고 CBC-N1QLBACK 를 사용하여 키/값 연산 및 N1QL 문의 성능을 테스트할 수 있습니다. YCSB 는 다양한 NoSQL 데이터베이스를 테스트하는 데 사용할 수 있는 또 다른 벤치마킹 도구입니다. YCSB에 대한 여러 문서와 YCSB-JSON 를 클릭하세요.

 

작성자

게시자 파벨 노보크쇼노프, 선임 솔루션 엔지니어, Couchbase

Pavel은 Couchbase의 선임 솔루션 엔지니어입니다. 이전에는 데이터베이스 관리, 컨설팅, 성능 엔지니어링, 기술 사전 영업 등 다양한 직무를 수행하며 Teradata Corporation, Harrahs Entertainment, NCR에서 근무했습니다.

댓글 하나

  1. jmeter용 카우치베이스 드라이버가 있나요?

    1. 파벨 노보크쇼노프, 선임 솔루션 엔지니어, Couchbase 12월 7, 2020에서 1:03 오후

      JMeter와 함께 사용할 수 있는 Couchbase JDBC 드라이버(CData에서 제공)가 있지만 테스트해 본 적은 없습니다.

댓글 남기기