Jmeter란?
Apache에서 만든 자바로 만들어진 웹 어플리케이션 성능 테스트 오픈소스이다.
JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다.
비슷한 부하테스트 도구로는 Apache Benchmark, Ngrinder, Pinpoint, Gatling등이 있다. 다음은 Apache JMeter가 가진 특징을 나열한 것이다.
- 다양한 프로토콜/서버를 테스트할 수 있다.
- 웹 - HTTP, HTTPS
- SOAP / REST 웹 서비스
- FTP
- 데이터베이스 (JDBC 사용)
- Mail (SMTP, POP3, IMAP)
- CLI 지원
- CI 또는 CD 툴과 연동할 때 편리하다.
- UI를 사용하는 것보다 메모리 등 시스템 리소스를 적게 사용한다.
- 시나리오 기반 테스트가 가능하다.
- 다양한 외부 플러그인을 사용하여 기능 확장이 가능하다.
환경
윈도우11
1. 설치 (JDK 8 이상)
- 아래 링크에 접속하여 apache-jmeter-5.6.3.zip(현재버전) 를 다운 받는다.
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
2. 실행
- 압축을 풀고나면 bin폴더 내에 있는 jmeter.bat 파일을 실행해서 콘솔창과 함께 jmeter가 실행된다.

3. 설정
- Test Plan 설정
- Name 수정 후 저장한다.

- Thread Group 설정
- Number of Threads: 서버로 Request를 보내는 Thread(유저 수)
- Ramp-up period: Number of Thread 만큼의 Thread를 실행시키는 데 걸리는 시간
- Loop Count: 요청 반복 횟수


위 이미지 설정으로 진행하면 500개의 Theads(users)들을 1초 내로 실행시키고, 60번 요청을 보낸다고 볼 수 있다.
- Sampler 설정

테스트하려고하는 Server Name or IP / Port Number / Request Method / Path를 입력한다.

- Listener 추가
결과를 그래프로 확인할 수 있는 플러그인
아래 링크에 들어가 2.0버전을 다운로드 받고, Jmeter폴더의 lib위치에 파일을 넣어주고 Jmeter를 재시작한다.
https://jmeter-plugins.org/?search=jpgc-graphs-basic
JMeter Plugins :: JMeter-Plugins.org
jmeter-plugins.org
필자는 그래프 포함 4개의 리스너를 추가하였다.

View Results Tree
리퀘스트의 테스트 시작 시간, 응답 속도 등 다양한 정보들이 나옵니다.

Summary Report
- Label : Sampler 명
- # Samples : 샘플 실행 수 (Number of Threads X Ramp-up period)
- Average : 평균 걸린 시간 (ms)
- Min : 최소
- Max : 최대
- Std. Dev. : 표준편차
- Error % : 에러율
- Throughput : 분당 처리량
- Received KB/sec : 초당 받은 데이터량
- Sent KB/sec : 초당 보낸 데이터량
- Avg. Bytes : 서버로부터 받은 데이터 평균

Aggregate Report

- Label : Sampler 명
- # Samples : 샘플 수 (Number of Threads X Ramp-up period)
- Average : 평균 응답 시간
- Median : 응답 시간 중앙값
- 90% Line : 90%의 샘플은 해당 값보다 적은 시간 내에 끝나고 10%는 더 걸린다. 라는 뜻의 컬럼
- 95% Line : 95%의 샘플은 해당 값보다 적은 시간 내에 끝나고 5%는 더 걸린다. 라는 뜻의 컬럼
- 99% Line : 99%의 샘플은 해당 값보다 적은 시간 내에 끝나고 1%는 더 걸린다. 라는 뜻의 컬럼
- Min : 최소값
- Maximum : 최대값
- Error % : 에러율
- Throughput : 초당 처리량
- Received KB/sec : 초당 받은 KB
- Sent KB/sec : 초당 보낸 KB
그래프 Transactions per Second

Jmeter를 이용해 부하 테스트를 하면 위와 같은 결과를 얻을수 있다.
참고
https://nangmandeveloper.tistory.com/8
[Spring] Jmeter로 HTTP Stress Test 진행해보기
개요 개발 공부를 시작할 때, 서버에서 사용하는 자원을 줄여야 한다는 사실은 누구나 알고 있습니다. 하지만, 이제 막 공부를 시작했다면 서버의 처리량이 얼마나 되는지, 내가 리팩토링을 했
nangmandeveloper.tistory.com
https://effortguy.tistory.com/164
[Spring] JMeter 사용법 - JMeter란?, 테스트 방법
웹 어플리케이션 성능 테스트를 툴은 자바 오픈 소스 Apache Bench, Apache JMeter, 네이버에서 Grinder를 이용해서 만든 nGrinder, Gatling 등등이 있습니다. 이번 포스팅에선 웹 어플리케이션 성능 테스트 오
effortguy.tistory.com
https://jaehoney.tistory.com/224
'개발 > etc' 카테고리의 다른 글
| [리눅스] JDK 버전 2개 설치 (0) | 2024.10.29 |
|---|---|
| Window Open JDK 17 설치 (2) | 2024.10.21 |
| JMX exporter + Prometheus + Grafana 로 자바 모니터링 (3) (0) | 2024.08.26 |
| JMX exporter + Prometheus + Grafana 로 자바 모니터링 (2) (0) | 2024.08.26 |
| JMX exporter + Prometheus + Grafana 로 자바 모니터링 (1) (0) | 2024.08.26 |