티스토리 뷰
반응형
nGrinder란, 네이버에서 서버의 부하 테스트를 위해 오픈 소스 프로젝트로 진행한 도구로,
애플리케이션을 서비스하기 전에 서버가 얼마나 많은 사용자를 수용 가능한 지 요청함으로써
서버의 성능을 측정해볼 수 있도록 도와준다.
nGrinder는 Controller와 Agent로 구성된다.
- Controller : 성능 측정을 위한 웹 인터페이스를 제공하며, 테스트 수행 및 결과를 수집하여 시각화함
- Agent : Controller의 명령을 받아 실행하며, agent 모드와 monitor 모드로 실행될 수 있음
- agent mode : target 머신에서 프로세스 및 스레드를 실행하여 부하를 발생
- monitor mode : target 머신의 CPU 및 Memory 사용량을 모니터링
Docker로 nGrinder 실행
아래 링크를 통해 쉽게 Docker로 실행하는 방법과 설명을 알 수 있다.
Controller 설치
% docker pull ngrinder/controller
Using default tag: latest
latest: Pulling from ngrinder/controller
6c40cc604d8e: Pull complete
93e89d51b14f: Pull complete
a9db8812b63a: Pull complete
3e0299ece4cc: Pull complete
018e62743d76: Pull complete
316cff05d08b: Pull complete
879040fac2a6: Pull complete
f05be963a0b6: Pull complete
Digest: sha256:bb669e6c63313337d50917554b38ce801e4300911a3ec8be99e1d3c3e64dd417
Status: Downloaded newer image for ngrinder/controller:latest
docker.io/ngrinder/controller:latest
Controller 실행
% docker run -d -v ~/ngrinder-controller:/opt/ngrinder-controller --name controller -p 80:80 -p 16001:16001 -p 12000-12009:12000-12009 ngrinder/controller
- 80 : Controller 웹 UI 포트
- 9010-9019 : Agent를 Controller에 붙도록 해주는 연결 포트
- 12000-12029 : Controller가 스트레스 테스트에 할당하는 포트
Agent 설치
% docker pull ngrinder/agent
Using default tag: latest
latest: Pulling from ngrinder/agent
6c40cc604d8e: Already exists
93e89d51b14f: Already exists
a9db8812b63a: Already exists
2c70c2da1dc5: Pull complete
61c897f05bc4: Pull complete
Digest: sha256:d6bf1c1c3eedf19d0946db224d8c19f71bf47aa9426ac8b6e37bbd15a4936baf
Status: Downloaded newer image for ngrinder/agent:latest
docker.io/ngrinder/agent:latest
Agent 실행
% docker run -d --name agent --link controller:controller ngrinder/agent
Docker 실행 컨테이너 확인
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4515042cc9bb ngrinder/agent "/scripts/run.sh" 35 seconds ago Up 35 seconds agent
a2f2cbbc8ca3 ngrinder/controller "/scripts/run.sh" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 0.0.0.0:12000-12009->12000-12009/tcp, 0.0.0.0:16001->16001/tcp controller
nGrinder 부하테스트 실행
http://localhost:80 또는 http://localhost로 접속 (초기 아이디 : admin / 패스워드 : admin)
상단 Script 메뉴에서 Create > Create a script 클릭
호출한 URL 정보를 입력 후 Create 클릭
- Script Name : 스크립트 이름
- URL to be tested : 테스트 하고자하는 API 주소
* localhost 또는 127.0.0.1은 사용이 불가능하므로 로컬 서버일 경우 개인PC 환경설정에서 IP를 추출해서 기입
아래처럼 스크립트가 자동으로 생성된 후 Validate를 통해 스크립트에 문제가 없음을 확인
그럼 이제 테스트를 생성하기 위해 상단에 Performance Test 메뉴에서 Create Test를 클릭
테스트를 생성 후 Save and Start 버튼 클릭
- Test Name : 퍼포먼스 테스트 이름
- Basic Configuration
- Agent : 스크립트 1개이므로 1 기입
- Vuser per agent : 테스트할 사용자 수
* 실행하는 Controller 서버 사양을 고려하여 설정하지 않으면 agent is about to die due to lack of free memory 라는 에러를 만날 수 있음 - Script : 실행할 스크립트 선택
- Duration : 실행할 시간 지정
그럼 이렇게 진행 중인 테스트의 실시간 데이터를 볼 수 있다.
(참고 : https://naver.github.io/ngrinder/)
반응형
'Docker' 카테고리의 다른 글
[Docker] openApiGenerate 사용 시 build failed 떨어지는 경우 (0) | 2023.07.12 |
---|---|
[Docker] Nexus (0) | 2021.02.10 |
[Docker] Jenkins (0) | 2021.02.10 |
[Docker] Redmine (0) | 2021.02.10 |
[Docker] Gitlab (0) | 2021.02.10 |