-
성능 테스트. nGrinderBackEnd/Tests 2022. 2. 15. 21:46반응형
nGrinder는 Naver에서 만든 스트레스 테스트용 플랫폼입니다. 스크립트 생성, 테스트 실행, 모니터링 및 결과 보고서 생성기를 동시에 실행할 수 있습니다.
nGrinder 구성 요소
- Controller: 테스터가 테스트 스크립트를 생성하고 테스트 실행을 구성할 수 있도록 하는 웹 애플리케이션
- Agent: 부하를 생성하는 가상 사용자 생성기
nGrinder 특징
- Jython or Groovy 스크립트를 사용하여 테스트 시나리오를 생성하고 여러 에이전트를 사용하여 JVM에서 스트레스를 생성합니다.
- 사용자 정의 라이브러리(jar, py, maven 종속성)로 테스트를 무제한 확장합니다.
- 프로젝트 관리, 모니터링, 결과 관리 및 보고서 관리를 위한 웹 기반 인터페이스를 제공합니다.
- 여러 테스트를 동시에 실행합니다. 사전 설치된 여러 에이전트를 할당하여 각 에이전트의 활용도를 최대화합니다.
- 스크립트 관리를 위해 Subversion을 포함합니다.
- 스트레스를 생성하는 에이전트와 스트레스를 받는 대상 머신의 상태를 모니터링할 수 있습니다.
- 1억 명 이상의 사용자가 있는 거대한 시스템을 테스트하는 데 사용되는 입증된 솔루션입니다.
nGrinder 설치
nGrinder는 웹 애플리케이션(Controller)과 Java 애플리케이션(Agent, Monitor)의 조합입니다. 컨트롤러와 에이전트를 설치하려면 Oracle JDK 1.6+ 또는 OpenJDK 1.7+이 필요합니다. nGrinder는 에이전트 및 에이전트와 통신하기 위해 많은 포트를 사용합니다.
- Agent: Any > Controller: 16001
- Agent: Any > Controller: 12000 ~ 12000+ (동시 테스트)
- Controller: Any > Monitor: 13243
- Controller > Public user: 8080 (default)
nGrinder 다운로드
https://github.com/naver/ngrinder/releases
nGrinder 실행
nGrinder는 기본적으로 웹 서버 포트 8080을 사용합니다. 다른 포트를 사용하려면 --port port_number를 매개변수로 지정하면 됩니다.
$ java -jar ngrinder-controller-3.5.5-p1.war --port 8082
오류가 발생할 경우 다음 명령어로 nGrinder를 실행합니다. nGrinder는 SVNKit, maven, Jetty 웹서버, groovy, python과 같은 라이브러리가 매우 많기 때문에 매우 큰 PermGen 메모리가 필요합니다. PermGen 설정으로 nGrinder를 다시 실행합니다.
$ java -XX:MaxPermSize=200m -jar ngrinder-controller-3.5.5-p1.war --port 8082
터미널에 다음 로그가 표시되면 nGrinder 컨트롤러를 실행할 준비가 된 것입니다.
Started NGrinderControllerStarter in 12.931 seconds (JVM running for 14.323)
브라우저를 열고 http://localhost:8082/ 접속합니다.
Agent 설치
관리자로 로그인합니다. (admin / admin) 우측 상단 메뉴의 Download Agent를 클릭합니다.
에이전트가 포함된 tar 아카이브 파일이 다운로드되면 압축해제를 합니다.
$ tar xvf ngrinder-agent-3.5.5-p1-localhost.tar
Agent 실행
$ ./run_agent.sh
- run_agent.sh # for linux / mac
- run_agent_bg.sh # If you want to run it in the background for linux / mac
- run_agent.bat # for windows
Agent 중지
- stop_agent.sh # for linux / mac
- stop_agent.bat # for windows
API 테스트
- Agent: 기본적으로 시스템당 하나의 에이전트만 지원됩니다. 하나의 시스템에서 여러 에이전트를 실행하려면 일부 에이전트 옵션을 구성해야 합니다. 에이전트 구성 안내서 참조하시면 됩니다.
- Vuser per agent: 에이전트별 가상사용자 수입니다. 애플리케이션 특성에 따라 지정합니다. 예) admin: 100 ~ 500, front serving: 1000 ~ 3000
- script: Groovy or Jython script, [R4] 클릭하면 스크립트를 확인하고 수정할 수 있습니다.
- Duration: 테스트를 수행할 시간을 지정합니다. 실제 운영 환경에서는 10분 이상 테스트를 수행합니다.
- Enable Ramp-Up: 테스트를 수행할 때 점점 부하를 증가시킬지 체크합니다. 우측 콤보박스에서 Process or Thread로 설정이 가능합니다. Thread 설정 후 기본 설정 값을 사용합니다.
Report를 보면 TPS가 4,016인 것을 확인할 수 있습니다. 이는 초당 약 4,000건의 Traffic을 처리할 수 있다는 의미입니다. 좌측의 Errors 건수가 존재하거나 우측 그래프에서 0으로 떨어지는 케이스가 존재한다면 좌측 하단의 Logs 압축 파일을 확인합니다.
[참고정보]
반응형'BackEnd > Tests' 카테고리의 다른 글
기타 테스트. ETC (0) 2022.02.19 아키텍처 테스트. ArchUnit (0) 2022.02.19 운영 이슈 테스트. Chaos Monkey (0) 2022.02.19 성능 테스트. JMeter (0) 2022.02.14