개요
이번 프로젝트는 대용량 데이터를 통한 트래픽처리, 속도개선 등의 성능개선이 필요하다고 판단되었다.
구글링을 해보니 네이버에서 제공하고 있는 nGrinder
라는 부하테스트 툴이 있었고 사용해보려 한다.
오픈소스
이며, 네이버에서 만들어서 그런가 한글
지원도 되고 무료
이다. 적용해보는 과정을 차근차근 정리해보려한다.
엔그린더, 엔지린더 아니다. 엔그라인더 라고 읽으면 된다.
nGrinder
네이버에서 진행한 오픈 소스 프로젝트로 서버의 부하테스트
를 위한 도구 이다. 웹 애플리케이션을 서비스하기 전에 서버가 얼마나 많은 사용자를 수용할 수 있는지 요청을 전송해봄으로써 서버의 성능을 측정해볼 수 있다.
Controller
와 Agent
로 이루어져 있다.
Controller 설치 / 실행
Controller
설치는 여기서… .war
파일을 다운로드 받은 후 폴더로 가서 터미널을 열고 다음 명령어를 입력하면 된다.
현재기준 최신버전은 3.5.8
이다.
1
java -Djava.io.tmpdir=${NGRINDER_HOME}/lib -jar ngrinder-controller-3.5.8.war
아 순조롭지 않다ㅠㅠㅠㅠ 오류가 발생했다.
1
2
3
4
5
6
7
8
9
10
11
Exception in thread "main" java.lang.IllegalStateException: Failed to create unpack directory in directory '/lib'
at org.springframework.boot.loader.archive.JarFileArchive.createUnpackDirectory(JarFileArchive.java:136)
at org.springframework.boot.loader.archive.JarFileArchive.getTempUnpackDirectory(JarFileArchive.java:122)
at org.springframework.boot.loader.archive.JarFileArchive.getUnpackedNestedArchive(JarFileArchive.java:112)
at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:96)
at org.springframework.boot.loader.archive.JarFileArchive$NestedArchiveIterator.adapt(JarFileArchive.java:236)
at org.springframework.boot.loader.archive.JarFileArchive$NestedArchiveIterator.adapt(JarFileArchive.java:227)
at org.springframework.boot.loader.archive.JarFileArchive$AbstractIterator.next(JarFileArchive.java:188)
at org.springframework.boot.loader.ExecutableArchiveLauncher.createClassLoader(ExecutableArchiveLauncher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:55)
at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59)
현재 기준 3.5.8
버전이 2주전에 나온 최신파일이다. 오류를 검색해도 나오지 않았다.
이리저리 찾다보니… nGrinder 사용자들을 위한 커뮤니티 같은게 있었다.
http://ngrinder.373.s1.nabble.com/ngrinder-user-kr-f113.html
여기에 질문을 하고 답을 찾을 수 있었다.
답변받은 내용
NGRINDER_HOME
환경변수 지정, 또는 -Djava.io.tmpdir=/현재유저패스/.ngrinder/lib
로 tmpDir을 넣어야 한다.
1
java -Djava.io.tmpdir=/Users/seung-gi/lib -jar ngrinder-controller-3.5.8.war
기본적으로 nGrinder는 웹 서버 포트 :8080
을 사용한다.
따라서 다른 포트를 사용하려면 --port port_number
를 매개변수로 지정해야 한다.
나는 NGRINDER_HOME
환경변수 대신 유저 패스값
을 넣었다. 환경변수 참고자료
NGRINDER_HOME 환경변수 설정 할 줄 몰라서는 아니다
1
java -Djava.io.tmpdir=/Users/seung-gi/lib -jar ngrinder-controller-3.5.8.war --port 7070
Started NGrinderControllerStarter in 23.897 seconds (JVM running for 25.106)
확인
잘된 것 같다.
사이트 접속
설치 후 http://localhost:7070/login 접속해본다. 참고로 나는 port_number
7070
으로 설정했다.
접속 성공 !! 초기 아이디와 비밀번호는 admin / admin
이다. 한국어
, Asia/Seoul
체크 !
로그인도 무난하게 성공! 메인화면까지 잘 뜨는지 확인해보자.
이제 Controller
설치했다…. Agent
도 어서어서 설치해보자!!!
Agent 설치
다운로드가 된 파일의 압출을 풀고 터미널로 폴더에 접속한다.
접속 후 ll
로 파일 확인 후 ./run_agent.sh
을 실행한다.
정상적으로 실행 되었는지 확인한다.
확인 후 에이전트 관리로 들어간다.
실행이 잘 되어있는지 확인한다.
이제 부하테스트, 성능테스트를 위한 준비는 끝났다.
테스트 스크립트를 작성해서 반영해야한다. Groovy 언어로 작성되어야 한다.
Groovy 로 테스트 스크립트를 작성해서 부하테스트 하는 과정은 다음 포스트에서 작성하겠다.