[nGrinder] 성능테스트: nGrinder 설치하기, 사용하기
nGrinder 설치하기, 사용하기: API 성능 테스트
nGrinder란?
서버의 부하 테스트를 위한 도구이다. 웹 애플리케이션을 서비스하기 전에 서버가 얼마나 많은 사용자를 수용할 수 있는지 요청을 전송해봄으로써 서버의 성능을 측정해볼 수 있다.
nGrinder는 Controller와 Agent로 이루어져 있다.
- Controller
- 웹 기반의 GUI 시스템
- 테스트 전반적인 작업이 이 Controller 에 의해서 작동
- Agent
- Controller 의 명령어를 받음
- Target 머신에 프로세스와 스레드를 실행시켜 부하를 발생 시킴
- 복수의 머신에 설치되어서 Controller 의 신호에 따라서 일시에 부하를 발생 시킴
- Target
- 테스트를 하기위한 타겟 머신
- 테스트를 하려는 서버를 의미함
nGrinder 설치하기
JAVA 설치
nGrinder를 설치하기 위해서는 우선 자바가 설치되어 있어야 한다.
https://www.oracle.com/java/technologies/downloads/#jdk19-windows
Download the Latest Java LTS Free
Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.
www.oracle.com
Controller 설치
자바가 설치 되었다면 아래의 nGrinder 다운로드 링크에서 최신 버전의 .war 파일을 다운로드 한다.
https://github.com/naver/ngrinder/releases
Releases · naver/ngrinder
enterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub.
github.com
파일이 저장된 폴더에서 cmd 창을 열어서 자바로 .war 파일(Controller)를 실행한다.
java -jar ngrinder-controller-3.5.8.war --port 7070
Controller를 실행한 포트 번호(7070)로 브라우저 주소창에 http://localhost:7070/login 를 입력하면 아래와 같은 화면이 나타난다. 초기 아이디와 패스워드는 모두 admin이다.
Agent 설치
오른쪽 상단 admin > Download Agent 를 클릭해서 Agent 압축 파일을 다운받는다.
다운받은 파일의 압축을 풀어준다.
tar -xvf ngrinder-agent-3.5.8localhost.tar
생성된 ngrinder-agen 디렉터리에는 여러 라이브러리 파일과 에이전트 실행 스크립트가 있다.
run_agent, stop_agent를 통해 에이전트를 켜고 끌 수 있다. window의 경우 run_agent.bat, 리눅스 기반일 경우 run_agent.sh 스크립트를 실행하여 에이전트를 실행한다.
오른쪽 상단 admin > Agent Management에 들어오면 실행중인 Agent를 확인할 수 있다.
API 성능 테스트
API 성능 테스트를 진행하기 위한 Script 생성
Script > Create > Create a script 클릭
Script Name 설정 및 테스트 하려는 API의 URL 입력한다.
입력한 방식으로 URL을 호출하는 스크립트가 생성된다. Validate 버튼을 눌러 테스트 해볼 수 있다.
처음 테스트를 했더니 아래와 같은 에러 메세지가 나왔다.
net.grinder.engine.common.EngineException: Setting of Local DNS provider failed
찾아보니 JDK 버전이 높아서 생기는 에러라고 해서 jdk-19에서 jdk-11로 재설치 하니 validate 테스트에 성공했다.
혹시 params를 가지는 GET 방식의 API를 호출한다면, 생성된 스크립트에서 class TestRunner() 안의 parmas = [:] 에 keyd와 value를 아래와 같은 형식으로 채워주면 된다!!!
테스트 제약 조건 변경
진짜 성능이 안좋은 API 를 테스트 하다보면 script validation 과정에서 이런 문구를 만날 수 있다. .
Validation should be performed within 100 sec.
이럴 때는 nGrinder의 기본 제약 조건을 변경해줘야 한다. 변경은 admin > system configuration에서 할 수 있다.
system configuration에 들어가서 validation time out을 재정의 해주면 된다.
Performance Test
이제 생성한 스크립트를 가지고 테스트를 진행해볼 차례다. 왼쪽 상단의 Performance Test를 클릭 한 후 Create Test를 클릭한다.
Test 속성 설정
Test Configuration의 속성들을 설정해서 테스트를 진행 할 수 있다.
Basic Configuration
⚡ Agent
└──성능 측정에 사용할 Agent 개수
⚡ Vuser per agent
└──Agent 당 설정할 가상 사용자 수
└──동시에 요청을 날리는 사용자 수를 의미
⚡ Process / Thread
└──하나의 Agent에서 생성할 프로세스와 스레드 개수
⚡ Script
└──성능 측정 시 각 Agent에서 실행할 스크립트
└──앞서 API 호출 과정에서 생성한 Script를 연결(.groovy)하거나 Github에서 가져올 수 있다.
⚡ Duration (HH:MM:SS)
└──성능 측정 수행 시간
⚡ Run Count
└──스레드 당 테스트 코드를 수행하는 횟수
Enable Ramp-up
⚡ Initial Count
└──처음 시작 시 가상 사용자 수
⚡ Initial Sleep Time
└──테스트 시작 시간
⚡ Incremental Step
└──Process 또는 Thread를 증가시키는 개수
⚡ Interval
└──Ramp-up 설정을 적용할 상승 시간을 설정합니다.
Report 확인
TEST를 실행하고 나면 Report 탭에서 수행 결과를 확인 할 수 있는데, 여기서 Detailed Report를 클릭하면 더 자세한 결과를 볼 수 있다.
[성능 테스트] Throughput(TPS), Latency
Throughput(TPS), Latency: API 성능 테스트 성능테스트란? 제작한 웹 서버(API)가 얼마나 많은 사용할 수 있는지 테스트하거나, 두가지 설계에 대해 어떤 설계가 더 좋은 성능을 내는지 확인하는 테스트
yoon001.tistory.com
Summary
⚡ TPS(Transaction Per Second)
└── 초당 처리량
⚡ Peak TPS
└── 최대 처리량
⚡ Mean Test Time (MTT)
└──평균 응답 시간
⚡ Mean Time to First Byte (MTFB)
└── 평균 첫 번째 바이트 도달 시간
└── Response Time으로 볼 수도 있음
** 응답시간 (Response Time)
사용자가 해당 업무를 요청한 시점부터 서버로부터 그 결과에 대한 응답을 받아서 사용자에게 요청 결과를 반환하는 데 걸리는 총시간이다. 사용자 측면에서의 성능을 평가하는 KPI로 주로 사용된다.
<참고>