
네이버클라우드에 쿠버네티스를 구축하고 springboot pod를 올렸다.
또 클라우드 서비스에서 redis, postgresql를 올렸는데,
redis 캐시관련해서 성능테스트를 해보고 싶어져서 몇 년 전부터 듣기만했던 Ngrinder 를 비로소 경험 해보려 한다.
Java 설치
ngrinder 는 .war 파일로 java가 깔려있어야한다.
(아래 링크의 이전 포스팅을 참고하라.)
포스팅에서 설치하는 자바 버전은 jdk18 인데,
grinder는 1.8 또는 11만 지원한다고 하니 버전을 잘 선택해야 한다.
우분투 20.04.3 LTS 에 openJDK 직접 설치하기
우분투에 openjdk를 설치하려하니 잘 안되서... ppa 레포를 등록하고 패키지 찾고하면 된다하는데 자꾸 안되서 수동 설치방법을 기록한다. https://jdk.java.net/archive/ 해당 페이지에 들어가 다운할 tar.gz
flowlog.tistory.com
Ngrinder 설치
아래 링크로 이동하면 최신 버전을 확인할 수 있다.
Releases · naver/ngrinder
enterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub.
github.com
링크를 복사 한뒤 wget으로 다운
$ wget https://github.com/naver/ngrinder/releases/download/ngrinder-3.5.6-20221007/ngrinder-controller-3.5.6.war
--2022-10-13 14:22:16-- https://github.com/naver/ngrinder/releases/download/ngrinder-3.5.6-20221007/ngrinder-controller-3.5.6.war
Resolving github.com (github.com)... 20.200.245.247
Connecting to github.com (github.com)|20.200.245.247|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/4709330/2130268d-0cdc-4462-8404-277959f1f84d?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221013%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221013T052216Z&X-Amz-Expires=300&X-Amz-Signature=6d95bc22eb8a32da4fe196a0135dc3acbb031e3a369f545e66cc356106f4ebe4&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=4709330&response-content-disposition=attachment%3B%20filename%3Dngrinder-controller-3.5.6.war&response-content-type=application%2Foctet-stream [following]
--2022-10-13 14:22:16-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/4709330/2130268d-0cdc-4462-8404-277959f1f84d?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221013%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221013T052216Z&X-Amz-Expires=300&X-Amz-Signature=6d95bc22eb8a32da4fe196a0135dc3acbb031e3a369f545e66cc356106f4ebe4&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=4709330&response-content-disposition=attachment%3B%20filename%3Dngrinder-controller-3.5.6.war&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.109.133, 185.199.111.133, 185.199.108.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 153953219 (147M) [application/octet-stream]
Saving to: ‘ngrinder-controller-3.5.6.war’
ngrinder-controller-3.5.6.war 100%[==============================================================================================================>] 146.82M 7.74MB/s in 15s
2022-10-13 14:22:32 (9.74 MB/s) - ‘ngrinder-controller-3.5.6.war’ saved [153953219/153953219]
다운이 다 되었으면 java로 기동
(--port 로 실행포트를 지정할 수 있다.)
$ java -jar ngrinder-controller-3.5.6.war --port=8300
springboot 로그가 쭉 뜨면서 기동된다.
각자 지정한 port 로 접속해보면 아래와 같은 페이지가 뜨고
최초 계정은 admin/admin 이다.
계정 패스워드 수정
우측 상단 admin>User Management 로 들어가면 기본적으로 생성된 계정이 있다.
기본적으로 패스워드는 id와 동일하게 되어있고 edit 버튼을 통해 패스워드를 변경할 수 있다.
Agent 설치
이제 실제 스크립트가 실행될 agent 서버를 만들어야한다.
우측 상단 admin>Download Agent 를 누르면 agent 파일이 다운된다.
특정 서버에 agent 파일을 넣고 압축을 푼다.
$ tar -xvf ngrinder-agent-3.5.6-223.130.162.121.tar
(다운받은 에이전트 파일 뒤의 223.130.162.121 은 controller 서버의 ip이다.)
필자는 네이버클라우드 안에 있는 서버임으로 private ip 통신을 해야하기 때문에 controller 서버 ip를 수정해야된다.
config 파일은 .ngrinder_agent 폴더 안에 있다.(기존 host정보를 주석처리하고 private ip 로 지정함)
$ vi ~/.ngrinder_agent/agent.conf
#agent.controller_host=223.130.162.121
agent.controller_host=10.160.227.6
이제 agent 를 실행해보자.
참고로 agent 는 JAVA_HOME 환경변수를 통해 실행된다.
export JAVA_HOME=자바설치경로/bin
$ ~/ngrinder-agent/run_agent.sh
2022-10-13 14:59:39,970 INFO agent config: NGRINDER_AGENT_HOME : /root/.ngrinder_agent
2022-10-13 14:59:40,233 INFO starter: ***************************************************
2022-10-13 14:59:40,233 INFO starter: Start nGrinder Agent ...
2022-10-13 14:59:40,234 INFO starter: ***************************************************
2022-10-13 14:59:40,234 INFO starter: JVM server mode is disabled.
2022-10-13 14:59:40,249 INFO starter: connecting to controller 10.160.227.6:16001
2022-10-13 14:59:40,273 INFO agent controller daemon: The agent controller daemon is started.
2022-10-13 14:59:40,337 INFO agent controller: Connected to agent controller server at /10.160.227.6:16001
2022-10-13 14:59:40,337 INFO agent controller: Waiting for agent controller server signal
이제 우측상단>Agent Management 페이지로 들어가면 활성화된 agent가 목록에 뜬다.
Test Script 작성
이제 상단메뉴의 Script를 눌러 생성해보자.
기본적으로 GET 방식으로 입력한 url 을 호출하는 스크립트가 생긴다.
Validate 버튼을 눌러 테스트할 수 있다.
스크립트 실행시 아래와 같은 에러가 발생한다면,
java 버전이 1.8 or 11 인지 확인하여야한다.(JAVA_HOME 환경변수 기준)
2022-10-13 15:07:16,788 ERROR worker-bootstrap: Error initialising worker process
net.grinder.engine.common.EngineException: Setting of Local DNS provider failed
at net.grinder.engine.process.GrinderProcess.<init>(GrinderProcess.java:154)
at net.grinder.engine.process.WorkerProcessEntryPoint.run(WorkerProcessEntryPoint.java:78)
at net.grinder.engine.process.WorkerProcessEntryPoint.main(WorkerProcessEntryPoint.java:60)
Caused by: java.lang.ClassNotFoundException: sun.net.spi.nameservice.NameService
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:383)
at java.base/java.lang.Class.forName(Class.java:376)
at org.ngrinder.dns.NameServiceProxy.set(NameServiceProxy.java:59)
at net.grinder.engine.process.GrinderProcess.<init>(GrinderProcess.java:151)
... 2 common frames omitted
Test Plan 설정 및 시작
이제 위에서 작성한 스크립트를 어떤 role 로 실행할지 정해야한다.
상단 메뉴 Performance Test>Create Test
테스트이름, Agent 는 실제 기동중인 agent 대수 만큼만 선택가능, 작성한 script 선택.
가상유저를 몇개 할지, Duration(테스트 진행 시간) 등을 설정한 후 Save and Start 하면된다.
테스트가 끝나면 Report 페이지가 뜬다.
마무리.
이렇게 nGrinder 를 사용하여 셋팅부터 호출까지 진행해 보았다.
이제 회원가입, 로그인 script를 구현하여 테스트를 진행할 것이다.
'엔지니어링 > 성능테스트' 카테고리의 다른 글
[성능테스트] nGrinder Script POST 해보기 (0) | 2022.10.13 |
---|