본문으로 건너뛰기

nGrinder 성능 테스트 #1 - 시작하기

2023년 12월 25일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.
여기에서 원본을 확인할 수 있습니다.

nGrinder란?

nGrinder는 네이버에서 제공하는 서버 부하 테스트 프로그램이며, 오픈 소스 프로젝트이다. 애플리케이션을 개발하고 발생할 수 있는 가상 시나리오를 만들어 사용자가 급증하여 트래픽에 몰렸을 때 하드웨어에서 요청을 처리하는 성능을 측정할 수 있도록 도와준다.

nGrinder 구조

  • Controller : 테스트를 위한 스크립트를 생성할 수 있고 이 스크립트를 실행하고 성능을 측정할 수 있는 웹 인터페이스를 제공하며 테스트 결과를 수집해 통계를 보여준다.
  • Agent : 컨트롤러의 명령을 받아 작업을 수행하며 프로세스 및 스레드를 실행시켜 테스트 타겟이 되는 애플리케이션에 부하를 발생시킨다.

설치하기: Controller

nGrinder는 공식 홈페이지에서 다운로드 받을 수 있다. 공식 홈페이지에 접속할 수 없다면 깃허브 레포지토리에서 직접 다운로드 받는 방법도 존재한다. 2023년 12월 8일 기준, 최신 버전은 3.5.8 버전이다. 다운로드 한 파일은 원활한 사용을 위해 따로 폴더 안에 저장하여 사용하는 것을 권장한다.

java -jar ngrinder-controller-3.5.8.war --port=8300

만약 3.5.8 버전의 nGrinder를 다운로드 받았다면, ngrinder-controller-3.5.8.war 파일을 다운로드 받았을 것이다. 이 컨트롤러를 실행하는 명령어는 다음과 같다. 사용을 희망하는 포트가 있다면 --port=8300 부분을 수정하여 실행해 주면 된다.

StartupInfoLogger.java:61 : Started NGrinderControllerStarter in 14.488 seconds (JVM running for 16.04) 라는 문구가 맨 마지막으로 표시되고, 실행이 멈췄다면 nGrinder 컨트롤러 실행이 완료된 것이다. 그러면, 브라우저에서 http://localhost:8300 에 접근하면 아래와 같은 화면이 표시된다. 만약 실행이 정상적으로 완료되지 않는다면, 글 맨 아래 ‘설치 중 발생한 에러 및 해결 과정’을 확인해 보는 것을 추천한다.

아이디와 비밀번호는 모두 admin 으로 동일하다. 이제 nGrinder 설치가 모두 완료되었으니, Agent를 설치해 주면 된다.

설치하기: Agent

nGrinder Agent는 위 단계에서 진행한 Controller에서 다운로드 받을 수 있다. 우측 상단에 admin 계정의 드롭다운 메뉴를 클릭한 후 Download Agent 버튼을 클릭하면 즉시 다운로드가 완료된다.

그 후, 다운로드가 완료된 .tar 파일의 압축을 위 사진과 같이 해제하여 준다. 우리는 run_agent.sh 파일을 실행해 주어야 한다. 위 단계에서 진행한 Controller의 터미널을 닫거나 실행을 중지하지 않고, 새 터미널을 열어 sh 파일을 실행한다.

cd /Users/yunhwan/Desktop/develop/ngrinder-agent
sh run_agent.sh

위 명령어와 같이, ngrinder-agent 폴더의 위치를 cd 명령어를 이용하여 마운트 후, 그 다음 명령어인 sh run_agent.sh 명령어를 실행하면 위 사진과 같이 Agent가 실행된다. 필자가 Agent를 실행할 때 특이한 에러가 발생하지 않았기에 아래 설치 중 발생한 에러 및 해결 과정에는 추가하지 않았다.

Agent를 다운로드하고, 실행까지의 과정을 마쳤다면 웹 브라우저로 돌아와서 Agent가 잘 실행되었는지 확인할 수 있다. 우측 상단의 admin 드롭다운 메뉴를 클릭한 후, Agent Management 메뉴를 클릭한다.

방금 실행한 Agent가 잘 실행되고 있음을 Status 칸에서 확인할 수 있고, 로컬에서 실행되고 있기에 IP | Domain란에 내부 아이피가 표시됨을 확인할 수 있다. 아이피 부분을 눌러보면 CPU 사용량이나 RAM 사용량을 확인할 수도 있다. 이렇게 잘 확인된다면 Agent가 잘 설치된 것이다.

설치 중 발생한 에러 및 해결 과정

!!! ERROR
Please set `java.io.tmpdir` property like following. tmpdir should be different from the OS default tmpdir.
`java -Djava.io.tmpdir=${NGRINDER_HOME}/lib -jar ngrinder-controller.war`

nGrinder 실행 시 필요한 임시 파일의 저장 경로를 명시하지 않아서 나는 에러이다. 따라서 실행 시 아래와 같이 임시 파일을 생성할 위치를 명시해주면 된다.

해결을 위해 임시 파일을 저장할 수 있는 temp 폴더를 만들어 주었고, 최종적인 경로는 /Users/yunhwan/Desktop/develop/temp 이다. 이 경로를 이용하여 수정된 명령어는 아래와 같다.

java -Djava.io.tmpdir=/Users/yunhwan/Desktop/develop/temp -jar ngrinder-controller-3.5.8.war --port=8300

마무리

이렇게 nGrinder Controller와 Agent 설치까지 마무리되었다. 아마 다음 글에서는 간단한 RESTful API를 Spring Boot를 활용하여 제작한 후, 맥북에서의 API 성능을 간단하게 테스트해볼 것 같고, 그 다음으로는 AWS 서버에서의 실제 테스트를 할 것으로 예상된다.