쿼카러버의 기술 블로그
[Jmeter - 부하테스트] Jmeter 기본 개념 / 분산테스트 세팅 / Mac에 설치하는 법 본문
Locust로 테스트를 하다가, 컴퓨터 성능에 비해 부하가 잘 안먹는 것 같아서 Jmeter로 해봤는데 확실히 부하가 더 잘들어가는 것 같다.
본 글에서는 다음에 대해 다룬다.
- Jmeter를 Mac에서 설치하는 법
- JMeter를 사용하는데 필요한 기본 개념,
- 분산환경에서의 JMeter 실행에(더 많은 부하 넣기 위해) 필요한 기본적인 세팅 (Mac에서도 가능하겠지만 Linux서버에서의 활용을 추천)
그냥 간단한 테스트를 원하는 경우에는 필자는 stress test를 위해 5개의 worker노드를 구성해서 해야했지만 간단한 부하테스트는 Mac에 설치해서 진행하는 것을 추천한다.
Mac에 JMeter설치
Jmeter에서 Controller는 Master서버로, 테스트에 필요한 세팅 및, Worker들에게 부하테스트 수행을 지시하는 역할을 한다.
Server는 Controller의 요청을 Listen하고 있다가, 부여 받은 테스트를 직접 수행한다.
1. 우선 Java가 설치돼있는지 확인한다.
터미널에서
javac -version
를 입력해 버전이 리턴되는지 확인한다.
만약 없다면 확인이 안 된다면 https://java.com/ko/download/ 로 접속해서 다운로드 jre를 다운받자.
2. brew로 jmeter를 설치한다.
터미널에서
brew install jmeter
3. jmeter 실행
터미널에서
open /usr/local/bin/jmeter
커맨드를 실행하면 아래 사진과 같은 결과가 나타날 것이다.
기본 개념
Jmeter는 웹 어플리케이션의 성능 시험에 활용할 수 있는 무료 부하 툴이다.
Java로 구현된 프로그램으로, 부하테스트 및 측정을 지원한다. Jmeter를 사용할 때 기본적으로 알아두면 좋을 개념들을 정리해보겠다.
1. Thread Group
Thread Group이란 하나의 테스트 케이스를 의미한다. 테스트를 시작하기에 앞서 가장 먼저 해야 할 일이 바로 Thread Group을 만드는 것이다. 하위 Element를 제어하기 위해, 부하 테스트 수행시 설정하고 싶은 항목들을 정할 수 있다.
1-1. Number of Threads(user) : Single Thread수로 사용자 수를 의미한다. 즉, 웹 어플리케이션에 요청을 동시에 실행할 사용자 수가 된다.
1-2. Ramp-Up period : Thread수만큼 도달하는데 소요되는 시간을 의미한다. (30 thread에 120초로 Ramp-up을 설정하면 4초당 1thread씩 생성된.)
1-3. Loop Count : Thread가 행하는 작업의 반복 횟수 : 10이면 10번 반복한다. Forever에 체크하면 무한 반복한다.
2. Controller and Server
Controller = 부하테스트를 실행하는 Master
Server = 실질적으로 부하테스트를 실행하는 Worker
------
여기까지가 기본 사용방법이고 이제 분산환경에서 여러개의 노드를 띄워 더 많은 부하를 넣고 싶은 경우에는 아래 글을 참고하길 바란다.
분산환경에서 테스트
분산환경에서 테스트 하려면 다음을 해주어야 함.
기본세팅으로
1. 같은 버전의 JMeter실행
2. same version of Java
3. disable SSL하던지, 아니면 valid keystore를 가지고 있을 것.
-> 필자는 다 disable했음.
-> jmeter 환경설정(~/{jmeterdir}bin/jmeter.properties) 수정
server.rmi.ssl.disable=true
슬레이브 세팅
실제로 부하테스트를 할 슬레이브를 실행한다.
jmeter가 있는 디렉토리로 이동해서 jmeter-server커맨드로 서버를 실행한다
JMETER_HOME/bin/jmeter-server
마스터 세팅
1. jmeter exe가 있는 디렉토리의 user.properties에 slave들의 IP주소들을 어준다.
remote_hosts=192.165.0.10,192.165.0.20,192.165.0.30
2. GUI를 열던지 아래 커맨드로 jmeter분산 테스트를 실행할 때 remote host(슬레이브를) 정할 수도 있다.
jmeter -n -t script.jmx -R server1,server2,…
참고자료:
'웹 개발' 카테고리의 다른 글
[gRPC] protocol buffer란? (protoc 실행 및 proto 예제) (2) | 2022.02.26 |
---|---|
[gRPC] grpc 간단 개념 및 서버 / 클라이언트 실행 예제 (정말 쉬운 튜토리얼) (4) | 2022.02.26 |
[JWT] JWT란 무엇인가? (JSON Web Token) 쉽게 정리한 core개념들 (1) | 2022.02.18 |
[웹 개발] Origin(출처)란 무엇인가? (What is Origin?) (0) | 2022.01.24 |
[웹 개발] CORS란 무엇인가? (what is Cross Origin Request Sharing?) (CORS 한번에 뿌시기) (nginx CORS에러) (0) | 2022.01.24 |