본문 바로가기

Leave a note/Tools

Jmeter

반응형
SMALL

JMeter 개요

 

Apache JMeter는 다양한 애플리케이션, API, 웹 서비스 등에서 성능과 부하 테스트를 수행할 수 있는 오픈 소스 도구.

기본적으로 Java로 구현되어 다양한 운영체제에서 사용 가능하며, HTTP(S) 웹 애플리케이션뿐만 아니라 FTP, SOAP, RESTful 서비스, 데이터베이스 등 여러 프로토콜을 지원.

주요 기능으로는 부하 테스트, 성능 테스트, 스트레스 테스트, 지속 시간 측정 등이 있음.

주요 장점으로는 GUI 기반의 편리한 인터페이스, 다양한 확장성, 직관적인 설정으로 비개발자도 손쉽게 사용할 수 있다는 점.

 

JMeter 설치방법

 

1. Java 설치 확인

JMeter는 Java로 작성되었기 때문에 Java Development Kit (JDK)가 설치되어 있어야 함.

설치 확인: 터미널 또는 명령 프롬프트에서 java -version 명령어 실행하여 버전 확인.

미설치 시 Oracle JDK 또는 OpenJDK에서 최신 버전 설치.

2. JMeter 다운로드 및 설치

JMeter 공식 웹사이트에서 최신 버전의 ZIP 파일 다운로드.

압축 해제 후 apache-jmeter/bin 디렉토리에 위치한 jmeter.bat(Windows) 또는 jmeter(Mac/Linux) 파일을 실행하면 JMeter GUI가 열림.

3. CLI 모드로 실행

부하가 많은 테스트는 CLI 모드에서 실행하는 것이 좋음.

CLI 실행 명령어 예시: jmeter -n -t 테스트파일.jmx -l 결과파일.jtl

 

JMeter 사용방법

 

1. Test Plan 구성 요소

Test Plan: 테스트의 전체 계획. 스레드 그룹, 샘플러, 리스너 등 모든 요소가 포함.

Thread Group: 사용자 수, Ramp-up 시간, 반복 횟수를 설정. 여기서 설정한 수치에 따라 부하가 결정됨.

Sampler: 실제 요청을 정의하는 요소 (예: HTTP Sampler는 HTTP 요청 전송, FTP Sampler는 FTP 서버와 통신).

Listener: 결과를 시각화하여 표시하는 요소. 그래프, 요약 보고서, 테이블 등을 통해 성능을 모니터링 가능.

Configuration Element: Sampler의 설정을 지원 (예: HTTP 헤더 매니저, CSV 데이터 파일 설정).

Assertions: 예상한 응답을 검증하는 기능으로, 응답 코드, 메시지 등을 확인하여 테스트 케이스의 성공/실패 여부 판별.

Pre/Post Processors: 샘플러가 실행되기 전 또는 후에 실행되는 프로세서. 데이터를 추출하거나 요청을 동적으로 수정하는 데 유용.

2. 기본 HTTP 요청 테스트 시나리오 예시

Test Plan 작성 → Thread Group 추가 (사용자 수, 반복 횟수, Ramp-up 설정) → HTTP Request Sampler 추가 (요청 URL, 메서드 설정) → Listener 추가 (View Results Tree, Summary Report 등).

설정 후 테스트 시작을 눌러 결과 확인. 결과는 리스너에서 그래프, 요약 보고서 등으로 확인 가능.

3. 다양한 프로토콜 설정 예시

HTTP(S): HTTP(S) Sampler를 사용해 URL, 메서드, 헤더, 파라미터 설정 후 테스트 가능.

JDBC: 데이터베이스에 대한 성능 테스트는 JDBC Sampler를 통해 SQL 쿼리를 직접 전송.

FTP: FTP Sampler를 통해 파일 업로드 및 다운로드 테스트.

SOAP 및 RESTful API: XML이나 JSON 형식의 메시지를 전송하여 API의 응답 시간을 측정할 수 있음.

 

JMeter 플러그인 매니저

플러그인 매니저(Plugins Manager): JMeter 기본 기능을 확장하는 플러그인을 쉽게 설치 및 관리할 수 있는 도구. 다양한 기능을 추가하여 테스트 효율성을 높이고 테스트 환경을 세밀하게 조정할 수 있음.

설치 방법:

1. JMeter Plugins 공식 사이트에서 플러그인 매니저 다운로드.

2. JMeter 설치 폴더의 lib/ext 디렉토리에 다운로드한 PluginsManager.jar 파일을 복사.

3. JMeter 실행 후, 상단 메뉴에서 OptionsPlugins Manager 선택하여 플러그인 관리 화면으로 이동.

4. 플러그인 목록에서 설치하려는 플러그인을 선택 후 설치 가능.

 

기본 그래프 (3 Basic Graphs)

1. Response Times Over Time

설명: 테스트 실행 시간 동안의 응답 시간을 시각화하여 보여줌.

활용: 특정 시점에서 응답 시간이 급증하거나 지연이 발생하는 시점을 파악하는 데 유용.

2. Active Threads Over Time

설명: 시간 경과에 따라 활성화된 스레드 수를 보여줌.

활용: 부하 증가 또는 감소 상황을 확인하고, 동시 사용자 수 변화에 따른 응답 속도에 대한 파악이 가능.

3. Transactions per Second

설명: 초당 발생하는 트랜잭션 수를 측정함.

활용: 부하가 늘어나면서 처리 가능한 트랜잭션 수를 확인하고 병목 발생 여부를 분석.

 

추가 그래프 (5 Additional Graphs)

 

1. Hits per Second

설명: 초당 처리된 HTTP 요청 수를 보여줌.

활용: 서버의 요청 처리 능력 확인과 부하 상태 파악에 사용.

2. Response Time Percentiles

설명: 응답 시간의 퍼센트 구간별 분포를 나타냄.

활용: 평균 응답 시간 이외에 90%, 95% 등 특정 지점의 응답 시간 확인이 가능하여 응답 지연의 일반적인 범위 파악에 유용.

3. Response Times Distribution

설명: 응답 시간이 특정 시간 범위에 얼마나 분포되어 있는지 보여줌.

활용: 전체 응답 시간의 분포를 통해 서버의 응답 지연이 특정 구간에 집중되는지 여부 파악.

4. Bytes Throughput Over Time

설명: 시간당 처리된 데이터의 바이트 수를 보여줌.

활용: 네트워크 대역폭 사용률 및 서버의 데이터 처리 용량 분석에 사용.

5. Connect Time Over Time

설명: 연결 설정 시간(연결 타임)을 시간에 따라 시각화하여 보여줌.

활용: 초기 연결 지연 분석에 유용하며, 네트워크 연결 성능을 평가할 때 사용.

 

JP@gc 플러그인

 

JP@gc 플러그인: JMeter의 성능과 기능을 확장하는 인기 있는 플러그인 패키지. 다양한 스레드 그룹과 타이머, 커넥터 등을 추가 제공.

Ultimate Thread Group: 스레드 증가 및 감소를 세밀하게 조절할 수 있어, 복잡한 부하 패턴 테스트에 유용.

Stepping Thread Group: 스레드 수를 점진적으로 증가시키며, 지정된 간격마다 사용자 수를 추가해 특정 패턴의 부하를 시뮬레이션.

Throughput Shaping Timer: 초당 트랜잭션 수를 제한하여 테스트하고자 할 때 사용하며, 트랜잭션을 설정된 속도로 조정.

PerfMon Metrics Collector: 서버의 CPU, 메모리, 네트워크, 디스크 사용률 등을 수집하여 서버 성능을 실시간 모니터링.


추천할만한 JMeter 플러그인 및 라이브러리

 JMeter Plugins: 기본 JMeter 기능 외에 플러그인을 통해 기능 확장 가능.

 JMeter Plugins에서 다운로드 및 설치 가능.

 Custom Thread Groups: Ultimate Thread Group, Stepping Thread Group 등 다양한 스레드 그룹을 추가하여 세부적인 부하 테스트 가능.

 PerfMon Metrics Collector: 서버의 CPU, 메모리, 디스크, 네트워크 사용률을 모니터링하여 상세한 서버 성능 정보를 확인 가능.

 Throughput Shaping Timer: 사용자 수를 일정 비율로 제어하며 테스트할 때 유용함.

 JDBC Connection Pooling Plugin: 데이터베이스 성능 테스트 시 연결 풀을 설정하여 DB 성능 최적화.

 Groovy: JMeter에서 스크립팅 작업 시 기본 BeanShell보다 성능이 좋고 구문이 간단하여 Groovy를 추천.

 설정: JMeter 설정 파일에서 language=groovy로 변경하여 사용 가능.

 

 

JMeter 옵션별 기능 설명

 

1. Thread Group

Number of Threads (users): 시뮬레이션할 가상 사용자 수. 이 수치가 높을수록 더 높은 부하를 발생시킴.

Ramp-Up Period (in seconds): 설정한 스레드 수가 활성화될 때까지의 시간을 설정. 부하 증가 시간을 조절하는 역할.

Loop Count: 각 스레드의 반복 횟수. 반복 수가 많을수록 트래픽이 많아져 더 높은 부하 테스트 가능.

Scheduler: 테스트 시작 시간과 지속 시간 설정 기능을 제공하여 특정 시간 동안만 테스트를 수행할 수 있음.

2. HTTP Request Sampler

Server Name or IP: 테스트할 서버의 도메인 또는 IP 주소.

Path: 요청 경로를 지정하며, 기본값은 루트.

Method: HTTP 요청 메서드 (GET, POST, PUT 등)를 선택.

Parameters: 요청에 필요한 파라미터를 지정하여 특정 데이터를 전송.

3. Listeners

View Results Tree: 각 요청에 대한 응답 데이터를 자세히 볼 수 있으며, 디버깅에 유용.

Summary Report: 전체 테스트 요약 보고서를 제공하며, 평균 응답 시간, 에러 수 등을 표시.

Aggregate Report: 여러 통계 항목을 집계하여 표시하며, 평균 및 최악 응답 시간, 처리량 등을 확인 가능.

4. Assertions

Response Assertion: 응답 데이터의 특정 값이나 코드가 예상과 일치하는지 확인.

Duration Assertion: 요청이 특정 시간 이내에 완료되는지 확인하여 지연 발생 여부를 체크.

Size Assertion: 응답 크기가 예상 범위 내에 있는지 검증.

5. Configuration Elements

HTTP Header Manager: HTTP 요청에 포함할 헤더를 설정하여 테스트 요청의 형식을 조정.

CSV Data Set Config: 외부 CSV 파일에서 데이터를 불러와 요청에 변수를 사용 가능.

User Defined Variables: JMeter에서 사용할 전역 변수 정의.

6. Timers

Constant Timer: 각 요청 사이에 일정한 대기 시간을 추가.

Gaussian Random Timer: 랜덤 타이머로, 요청 사이의 간격을 랜덤으로 설정하여 실제 사용자 행동을 모방.

Uniform Random Timer: 일정 범위 내에서 대기 시간을 랜덤으로 추가하여, 균등 분포된 대기 시간 생성.

 

참고할만한 팁

 최적의 Thread Group 설정: 초기에 낮은 사용자 수로 테스트하고, 점진적으로 늘려 서버의 한계치를 파악.

 Listeners 사용 최적화: GUI 모드에서 여러 Listener 사용 시 메모리 사용이 증가할 수 있으므로 CLI 모드에서 실행하거나 필수 리스너만 사용하는 것이 효율적.

 CSV 데이터 설정: 다수의 사용자 또는 변수 데이터를 활용할 경우 CSV Data Set Config를 사용하여 파일에서 데이터를 로드해 테스트 수행.

 PreProcessor와 PostProcessor 활용: 테스트 전후로 추가 작업이 필요할 때 유용 (예: 인증 토큰 설정, 응답 데이터 추출).

 테스트 결과 로그 관리: CLI 모드에서 테스트 결과를 파일로 저장 (-l 옵션). 저장된 결과 파일을 통해 상세한 분석 가능.

 서버 모니터링 툴 병행 사용: JMeter 단독으로는 네트워크 지연이나 CPU 사용량 등을 확인하기 어려우므로 Zabbix, Grafana와 같은 모니터링 툴을 병행 사용하여 서버 상태 분석.

 

 

각 기능을 적절히 활용하여 테스트의 세부 조정이 가능하고, 다양한 플러그인과 설정을 통해 실제 환경을 모방한 성능 및 부하 테스트가 가능함.

참고자료

 

Apache JMeter 공식 문서

JMeter Plugins

Performance Testing with JMeter - Example Guides

반응형
LIST

'Leave a note > Tools' 카테고리의 다른 글

Querypie  (0) 2024.11.11
Ansible (앤시블)  (0) 2024.10.28
[툴] 각종 유틸리티 페이지  (0) 2023.02.01
[SourceTree] 소스트리 SSH Clone  (2) 2020.08.06
[윈도우프로그램] vb6ko.dll 에러 해결 방법  (0) 2020.01.27