성능 테스트와 부하 테스트는 프로덕션 준비 상태를 확인하는 데 도움이 되는 중요한 프로세스입니다. Couchbase Server 클러스터를 테스트하기 위한 오픈 소스 명령줄 유틸리티로 "cbc-pillowfight"라는 것이 있습니다. 이 유틸리티는 libcouchbase.
시작하기 전에
Couchbase Server 클러스터가 실행 중이어야 합니다. 로컬 컴퓨터에서 직접 사용해 볼 수 있습니다(Linux, Windows 및 Mac용 Couchbase 다운로드) 또는 도커 컨테이너.
필로우파이트만 사용하려는 경우, 클러스터에 이 용도로만 버킷을 생성하는 것이 좋습니다. 저는 "pillow"이라는 버킷을 만들었습니다.
Couchbase Server를 설치한 후에는 libcouchbase를 다운로드하여 설치해야 합니다:
- Mac:
brew 설치 libcouchbase - Windows: zip 파일 다운로드 (작성 시점의 최신 버전은 libcouchbase-2.8.1입니다.)
Linux 지침을 포함한 자세한 내용은 다음을 참조하세요. 라이브러리카우치베이스 릴리즈 노트.
성능 테스트를 위한 베개 싸움
홈브루를 사용하여 Mac에 설치하는 경우 다음과 같이 입력할 수 있습니다. cbc-pillowfight --help 를 클릭하면 바로 명령줄 도움말 화면으로 이동합니다.
Windows에서는 원하는 위치에 libcouchbase zip 파일의 압축을 풉니다. 다음을 찾을 수 있습니다. cbc-pillowfight.exe 에서 bin 폴더로 이동합니다.

가장 간단한 베개싸움을 할 수 있습니다:
.\cbc-pillowfight.exe -U couchbase://localhost/pillow -u 관리자 -P 암호
이것은 Windows Powershell 명령줄을 위한 것이지만 다른 OS에서도 매우 유사합니다.
로컬 컴퓨터(로컬 호스트)에서 실행 중인 클러스터에 대해 '비밀번호'가 'password'인 '관리자' 사용자와 베개 싸움이 시작됩니다(사용자 이름과 비밀번호가 다를 수 있음).

"스레드 0 채우기가 완료되었습니다"와 같은 메시지가 표시되어야 합니다.
베개 싸움이란 무엇인가요?
이 시점에서 베개싸움은 "베개" 버킷에서 문서를 만들고, 업데이트하고, 읽기 시작합니다. 사용자가 지정한 명령줄 설정에 따라 이러한 모든 작업("작업")을 수행하거나 기본값으로 돌아갑니다.
예를 들어 -I 플래그를 사용하면 작업할 총 문서 수를 지정할 수 있습니다. 기본값은 1000개입니다. 따라서 위 명령을 실행하면 곧 베개 버킷에 1000개의 문서가 표시됩니다.
1000개의 문서를 생성하고 종료하는 것이 아닙니다. 필로우파이트는 프로세스를 종료할 때까지 해당 문서를 계속 "가져오고" "업데이트"합니다. Couchbase 클러스터를 전투에 투입하기 때문에 '베개싸움'이라고 부르지만, 실제로는 전투 시뮬레이션에 가깝습니다.
전투가 진행되는 동안 버킷 통계를 모니터링하여 클러스터가 부하 상태에서 어떻게 작동하는지 확인할 수 있습니다.

이 글을 쓰는 동안 노트북에 설치한 단일 노드 Couchbase 클러스터를 스트레스 테스트하는 동안 노트북의 팬이 윙윙거리며 작동하고 있습니다. (가정용 데스크톱에서는 훨씬 더 인상적인 차트를 만들 수 있을 것 같습니다. 이번 달에 여행을 많이 다니고 있습니다.).
버킷 단위로 살펴볼 수 있는 다양한 통계가 있습니다. 버킷 단위의 통계 모니터링에 대한 카우치베이스 서버 문서 에서 자세한 내용을 확인하세요.
성능 테스트를 위한 옵션
기본 베개싸움 설정은 카우치베이스에서 사용할 애플리케이션 유형에 최적이 아닐 수 있습니다. 사용 사례에 더 적합하도록 베개 싸움을 조정하는 방법에는 여러 가지가 있습니다. 전체 옵션 목록을 보려면 다음과 같이 입력하세요. cbc-pillowfight --help 를 명령줄에 입력합니다.
하지만 시도해 볼 만한 몇 가지 주목할 만한 옵션이 있습니다:
-I또는--num-items를 숫자와 함께 사용하여 작업할 문서 수를 지정할 수 있습니다.--json를 사용하여 문서에서 JSON 페이로드를 사용할 수 있습니다. 기본적으로 문서는 비 JSON 페이로드를 사용하지만, 베개 싸움이 실행되는 동안 성능의 다른 측면을 테스트하기 위해 실제 JSON 문서가 필요할 수 있습니다.-e를 설정하여 일정 기간 후에 문서를 만료할 수 있습니다. Couchbase를 캐시 또는 단기 저장소로 사용하는 경우 이 설정을 사용하여 문서 만료의 영향을 모니터링할 수 있습니다.--서브독를 사용하여 하위 문서 API를 사용하세요. 모든 작업이 전체 문서에 있어야 하는 것은 아닙니다.-M또는-최대 크기을 클릭해 문서 크기에 상한선을 설정합니다. 이를 조정하여 시스템에 보다 현실적인 문서 크기를 맞출 수 있습니다. 이에 해당하는-m그리고--min-size도 마찬가지입니다.
다음은 위의 옵션을 사용한 또 다른 예입니다:
.\cbc-pillowfight.exe -U couchbase://localhost/pillow -u Administrator -P password -I 10000 --json -e 10 --subdoc -M 1024
이렇게 하면 10초 후에 만료되고 하위 문서 API를 사용하며 최대 문서 크기가 1024바이트인 10000개의 JSON 문서를 사용하여 필로우 싸움이 시작됩니다.
참고 -t --num-threads 옵션이 필요합니다. 현재 저처럼 Windows를 사용하는 경우에는 단일 스레드로 제한됩니다( 이 코드).
요약
카우치베이스는 성능에 최선을 다하고 있습니다. 광범위한 성능 테스트를 통해 사용자가 기대하는 속도를 제공하고 있는지 확인합니다. 최근 블로그 게시물에서 플라즈마 저장 엔진 그리고 N1QL 개선 사항. 하지만 여러분의 사용 사례와 인프라를 여러분보다 더 잘 아는 사람은 없습니다. 필로우파이트에는 성능 테스트, 부하 테스트, 스트레스 테스트를 수행하는 데 도움이 되는 도구가 있습니다.
다음 분들께 감사드립니다. 세르게이 아브제예프 이 블로그 게시물에 도움을 주신 라이브러리카우치베이스에 기여하기.
아래에 댓글을 남기거나 다음에서 저를 찾아 Couchbase에 대해 궁금한 점이 있으면 문의해 주세요. 트위터 @mgroves.
이 기능이 작동하지 않는 것 같습니다. Windows 명령 프롬프트(관리자)에서 기본 명령을 시도하고 있습니다:
cbc-pillowfight.exe -U couchbase://ar-sql-01 -u Some_User -p Some_Password
응답은 다음과 같습니다:
연결하지 못했습니다: 인증에 실패했습니다. 잘못된 사용자 이름/비밀번호 조합을 제공했을 수 있습니다.
그러나 내 비주얼 스튜디오 프로젝트에서 서버의 첫 번째이자 유일한 항목으로 "couchbase://ar-sql-01"을 사용하고 사용자 이름과 비밀번호에 각각 Some_User/Some_Password를 사용하면 연결(및 모든 기능)이 정상적으로 작동하므로 사용자 이름과 비밀번호가 정확하다는 것을 알 수 있습니다. 어떤 아이디어 있나요?
NM. 비밀번호에 -P 대신 -p를 사용했습니다(대소문자 차이에 유의하세요). 또한 연결 문자열에 /를 추가해야 했습니다. 다른 사람에게 도움이 될까요?