1. Apache JMeter
Apache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구이다
JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해
과부하를 시뮬레이션 하여 강도를 테스트하거나 다양한 부하 유형에서
전체 성능을 분석하는데 사용할 수 있다
비슷한 부하테스트 도구로는 Apache Benchmark, Ngrinder, Pinpoint, Gatling등이 있다
아래는 Apache JMeter가 가진 특징을 나열한 것이다
1) 다양한 프로토콜 / 서버를 테스트할 수 있다- 웹 : HTTP, HTTPS- SOAP / REST 웹 서비스- FTP- 데이터베이스 (JDBC 사용)- Mail (SMTP, POP3, IMAP)
2) CLI 지원- CI 또는 CD 툴과 연동할 때 편리하다- UI를 사용하는 것보다 메모리 등 시스템 리소스를 적게 사용한다
3) 시나리오 기반 테스트가 가능하다
4) 다양하 외부 플러그인을 사용하여 기능 확장이 가능하다
2. 주요 개념
- Thread Group: 몇 개의 쓰레드가 동시에 요청을 보내는 지
- Sampler: 어떤 유저가 해야 하는 액션
- Listener: 응답을 받았을 때 어떤 동작을 취하는 지 (검증, 리포트, 그래프 그리기 등)
- Configuration: Sampler 또는 Listener가 사용할 설정 값 (쿠키, JDBC 커넥션 등)
- Assertion: 응답 결과의 성공 여부를 판단하는 조건 (응답 코드, 본문 내용 등)
3. 사용하기
먼저 Apache JMeter를 설치해야 한다
앞서 언급했듯 JMeter는 순수 자바 애플리케이션이다
Java 8 문법을 내부적으로 사용하기 때문에 자바 8 버전 이상이 설치되어 있어야한다
https://jmeter.apache.org/download_jmeter.cgi
Apache JMeter - Download Apache JMeter
Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava
jmeter.apache.org
또한 플러그인 파일도 같이 다운받아서
압축을 해제한 후 JMeter 폴더안에 넣어준다
Jmeter 플러그인을 설정하게 되면 Jmeter 실행 후 부하테스트 시 부하유입량부터
TPS처리 반응까지 그래프로 확인할 수 있으니까 초기 설정해놓으시면 아주 편하다
1) 플러그인 파일
플러그인파일 -> lib -> jar파일 1개
플러그인파일 -> lib -> ext -> jar 파일 2개
총 3개를 복사해서
2) Apache JMeter에 붙여넣기
Apache JMeter파일 -> lib -> ext 안에 jar 파일 3개를 붙여넣기

위 과정을 마치고나서 이제 본격적으로 시작 해본다
1) Apache JMeter 파일에서 실행하기
Apache JMeter -> bin -> JMeter.bat
어플이 켜지만 test plan에서 Add 눌러서
Config Element -> User Defined Variables

그리고 처음에는 빈칸으로 나오지만 아래 Add를 눌러서 아래 사진처럼 작성 해준다
이유는 Description에 적었고 쓰레드그룹에서 환경변수 처리로 사용할것이다

2) 쓰레드그룹 생성하기
Test Plan -> Add -> Threads(Users) -> Thread Group

그러면 아래와 같은 설정 창이 나온다

노출되는 창에서 Thread Properties가 중요한 부분이다
- Number of Threads: 몇 개의 쓰레드(유저 수)로 테스트할 지
- Ramp-up period: {Number of Thread} 만큼의 쓰레드를 몇초에 걸쳐서 만들 지
- Loop Count: 요청을 몇번을 반복할 지
추가적으로 Action to be taken after a Sample error는 에러 처리가 되었을 때 취할 액션이다
이는 Assertion의 결과로 판단한다
나는 환경변수를 설정해서 앞에 만든 User Defined Variables에서 사용할 것이다

3) 샘플러 생성
Thread Group -> Add -> Sampler -> HTTP Request

여기서는 Web Server부분을 아래 사진처럼 바꿔주면된다


4) 리스너 생성
먼저 리스너에 어떤 종류가 있는지 아래 링크에서 확인해보자
https://jmeter.apache.org/usermanual/component_reference.html#Backend_Listener
Apache JMeter - User's Manual: Component Reference
< Prev Index Next > 18 Introduction¶ Several test elements use JMeter properties to control their behaviour. These properties are normally resolved when the class is loaded. This generally occurs before the test plan starts, so it's not possible to change
jmeter.apache.org
먼저 리스너 만드는 방법부터 보자면
Thread Group -> Add -> Listener
위에 경로를 통해 원하는 리스너들을 생성하면 된다

나는 4가지를 사용해볼 생각이다
View Results Tree
결과 보기 트리에는 모든 샘플 응답의 트리가 표시되어
모든 샘플에 대한 응답을 볼 수 있다

Summary Report
요약 보고서는 말 그대로 전체 테스트의 평균이나
오류량 시간이 얼마 걸린지를 볼 수 있다


Response Times Over Time
시간이 얼마나걸렸는지 그래프로 나타내 준다

Transactions per Second
요청이 얼마나 걸렸는지와 성공여부를 그래프로 보여준다

'DevOps' 카테고리의 다른 글
| [DevOps] MobaXterm 설치 및 사용방법 (SSH 접속) (0) | 2023.06.26 |
|---|---|
| [DevOps] 리눅스란? CentOS vs Ubuntu (0) | 2023.06.21 |
| [DevOps] OAuth 2.0 (생활코딩) (0) | 2022.12.01 |
| [DevOps] Forward Proxy와 Reverse Proxy 차이점 (0) | 2022.12.01 |
| [DevOps] EC2에 Nginx설치하고 스프링부트에 적용해 보기 (0) | 2022.11.30 |