윈도우에서 nGrinder로 부하테스트 해보기

xeonu·2023년 1월 8일
0

우리가 웹 서비스를 개발하고 세상에 출시하기 전에 다양한 테스트를 진행하게 된다. 간단하게 비즈니스 로직이 동작하는지 부터 보안관련된 사항까지 검사해야할 것들이 정말 많다. 이 모든 것들은 결국 실제로 서비스가 출시되었을 때 원할하게 운영이 되기 위함이다. 이 포스트에서는 여러 테스트중 부하테스트에 대해서 알아보자.

부하테스트

시스템의 한계에 도달할 때까지 트래픽을 집어 넣어서 한계치를 확인하는 테스트이다. 테스트 결과로 부터 잘못된 메모리 관리나 프로그램의 결함을 발견할 수 있고 데이터베이스와 같은 하드웨어 장비의 사양을 결정할 때 참고할 수 있다. 필자는 nGrinder라는 도구로 부하테스트를 진행하고자한다.

nGrinder란

nGrinder is a platform for stress tests that enables you to execute script creation, test execution, monitoring, and result report generator simultaneously. The open-source nGrinder offers easy ways to conduct stress tests by eliminating inconveniences and providing integrated environments.

_출처: https://naver.github.io/ngrinder/

nGrinder는 naver(구 NHN)에서 개발한 부하테스트 도구이며 오픈소스로 지금까지도 개발되고 있다. 개발사의 설명처럼 부하테스트 도구이며 테스트를 진행하면서 모니터링도 할 수 있고 동시에 결과도 확인할 수 있다.

nGrinder를 통해 부하테스트를 진행하기 위해서는 controlleragent를 설치해야한다. controller는 테스트 스크립트를 작성하고 테스트를 실행하는 도구이다. agent는 실제로 트래픽을 생성하는 가상의 사용자이다.

본인은 M1 MacBook을 사용중인데 설치에 문제가 있어서 윈도우로 진행을 했다. 다른 분들은 AWS EC2나 NCP의 server로 대안을 찾길 바란다.

nGrinder 테스트 환경 구축

구축할 때 유의할 점은 JDK 8 혹은 11환경에서 사용해야한다. 필자는 JDK 18에서 agent를 실행했을 때 오류가 발생했다. 구축환경을 윈도우이므로 참고바란다.

controller 설치

설치링크: https://github.com/naver/ngrinder/releases

위 링크로 접속해서 controller가 설치된 최신버전의 war 파일을 다운받자.

해당 파일을 다운로드 하고 명령 프롬포트를 열어서 다운로드 받은 디렉토리로 이동해주자. (cd 명령어로 이동하면 된다. 참고로 윈도우에서 dir 명령어가 리눅스 ls 명령어 역할을 한다.)

$ java -jar ngrinder-controller-<다운로드 받은 버전>.war

빌드가 되면 default로 8080포트에서 nGrinder Agent를 확인할 수 있다. defualt id, password는 admin이다.

localhost:8080으로 접속하면 해당 페이지를 확인할 수 있다.

성공적으로 controller를 설치했다.

agent 설치

controller로 들어간 후 우측 상단의 admin을 클릭하고 에이전트 다운로드를 클릭하여 agent를 다운로드받자. 해당 파일의 압축을 풀어준 후 명령프롬포트로 run_agent.bat가 있는 디렉토리로 이동하자.

$ run_agent.bat

윈도우이기 때문에 bat 파일을 실행시켜주면 성공적으로 agent가 실행된다.

nGrinder 테스트 해보기

이 포스트는 테스트 스크립트의 세부적인 내용을 다루진 않고 단순히 트래픽을 몰아 넣어 테스트해보는 과정에 대해 설명하고자 한다. controller 페이지에 접속해 QuickStart에 테스트하고자 하는 URL을 넣어보자.

필자의 환경은 10코어 i7-10700 cpu여서 최대 3000개의 가상사용자를 생성할 수 있다. 이번엔 99개의 가상 사용자로 1분간 트래픽을 넣어보고 테스트해보겠다.

다음과 같이 TPS 변동을 실시간으로 확인할 수 있다. 점점 가상유저수를 늘리면서 ramp-up도 조절하면서 임계치를 확인해나가면 서비스 운영을 할 때 고민할 요소들에 대한 답을 얻기 쉬울 것이다.

profile
백엔드 개발자가 되기위한 여정

0개의 댓글