이제 사이드 프로젝트에서 부하 테스트를 진행해볼 단계이다. 부하테스트를 위해 보통 JMeter, NGrinder를 많이 사용하며, 필자는 이번에 NGrinder를 이용해보기로 하였다. 직접 사용해서 부하를 주기 전에 설치하는 방법에 대해 정리하기로 하였다.

nGrinder 실행을 위한 서버 생성

기본적으로 nGrinder와 같은 오픈소스를 이용한 성능테스트를 진행할 때에는 높은 성능의 서버를 이용하는 것이 좋다. 그래야 비교적 정확하게 성능을 파악할 수 있기 때문이다. 필자는 8vCPU 8GB Mem로 생성하였다. 서버 생성후에는 아래와 같은 순서로 nGrinder를 설치해주었다.

yum 오류 해결

yum으로 jdk를 설치해야 하는데, 아래와 같은 오류가 발생했다.

Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt

확인해보니, CentOS 6버전대를 사용중인대 6버전은 유지관리 지원 기간이 끝났다고 한다. 그에 따라 mirrorlist 텍스트파일을 변경해주어야 한다고 한다.

echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt
echo "http://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
echo "http://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt

필자는 64비트를 사용하고 있어서 shell에서 위 명령어를 실행해주었다.

jdk 설치

[root@kidsafer-ngrinder ~]# sudo yum install java-1.8.0-openjdk-devel

위와 같은 명령어로 리눅스 서버에 jdk 8 버전을 설치해주었다. 그 후에는 환경변수를 설정해주자.

[root@kidsafer-ngrinder ~]# readlink -f /usr/bin/javac

스크린샷 2021-08-07 오후 11 10 53

그 후에는 profile 파일을 실행해서 최하단에 환경변수를 추가해주었다.

 [root@kidsafer-ngrinder ~]# vim /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-0.el6_10.x86_64 스크린샷 2021-08-07 오후 11 17 47

마지막으로 아래 명령어를 실행시켜서 변경 내용을 저장한다.

[root@kidsafer-ngrinder ~]# source /etc/profile

서버에 컨트롤러 설치하기

ngrinder 릴리즈 파일 링크를 통해 최신 버전의 링크를 찾자. 그 후에는 리눅스 서버에서 다운받는다.

[root@kidsafer-ngrinder ngrinder]# wget https://github.com/naver/ngrinder/releases/download/ngrinder-3.5.5-p1-20210531/ngrinder-controller-3.5.5-p1.war

설치 후, 아래 명령어로 ngrinder를 실행해본다.

[root@kidsafer-ngrinder ngrinder]# java -XX:MaxPermSize=200m -jar ngrinder-controller-3.5.5-p1.war 

nGrinder가 매우 큰 PermGen 메모리를 필요로 하기 때문에 위와 같이 PermSize를 늘려주어 실행할 수 있도록 한다. 실행하고 아래와 같이 톰캣이 실행되었다는 메시지가 뜬다면 성공적으로 ngrinder 서버가 실행된 것이다.

2021-08-07 23:50:57,715 INFO  FrameworkServlet.java:547 : Completed initialization in 7 ms
2021-08-07 23:50:57,719 INFO  TomcatWebServer.java:220 : Tomcat started on port(s): 8080 (http) with context path ''
2021-08-07 23:50:57,728 INFO  StartupInfoLogger.java:61 : Started NGrinderControllerStarter in 17.226 seconds (JVM running for 18.594)

이제 공인IP주소:8080으로 nGrinder 서버에 접속해보자. 초기 ID/PW는 admin/admin이다. 스크린샷 2021-08-07 오후 11 54 21

서버에 agent 설치

먼저 접속한 ngrinder 서버에 Agent management로 들어가자. 그 후, agent를 다운로드 받는 링크를 복사한다. 보통은 본인의 서버IP주소:포트/agent/download/…/ 로 되어 있다.

스크린샷 2021-08-08 오전 12 01 48

url을 복사해서 wget명령어로 리눅스 서버에 다운로드 받는다.

[root@kidsafer-ngrinder ngrinder-agent]# wget http://서버IP주소:포트/agent/download/ngrinder-agent-3.5.5-p1.tar

그 후, 압축을 풀어주고 해당 폴더로 이동한다.

[root@kidsafer-ngrinder ngrinder-agent]# sudo tar xvf ngrinder-agent-3.5.5-p1.tar 
[root@kidsafer-ngrinder ngrinder-agent]# cd ngrinder-agent/

마지막으로 아래 명령어로 에이전트를 실행시킨다.

[root@kidsafer-ngrinder ngrinder-agent]# ./run_agent.sh

아래와 같이 뜨면 에이전트는 정상적으로 실행이 되었다고 볼 수 있다 !!

스크린샷 2021-08-08 오전 12 05 50

실행 확인

설치와 실행은 다 완료되었다. 마지막으로 admin > Agent Management를 통해 에이전트 서버가 등록된 것을 확인해보면 설치는 마쳤다고 볼 수 있다.

스크린샷 2021-08-08 오전 12 08 05

이제 다음으로는 직접 부하를 줘보고 어떤 문제가 발생하는지 확인해 볼 예정이다.


oksusutea's blog

꾸준히 기록하려고 만든 블로그