1. JMeter 실행 방식
일반적으로 JMeter를 사용할 때는 GUI 인터페이스를 통해 테스트 시나리오를 작성하고 인터페이스 테스트를 진행합니다. 하지만 자동화 방식으로 JMeter 부하 테스트를 실행해야 할 경우 GUI 모드는 적합하지 않습니다. 또한 많은 Linux 서버는 GUI 환경을 지원하지 않기 때문에 비 GUI 모드로 JMeter를 실행하는 방법을 알아야 합니다.
2. 비 GUI 모드 실행의 장점
JMeter의 시각적 인터페이스와 리스너가 동적으로 결과를 표시하는 것은 상당한 시스템 자원을 소모합니다. 대규모 동시성 테스트 시 GUI 방식은 종종 부하 시스템의 자원이 부족해지게 하여 성능 테스트 결과에 영향을 줄 수 있습니다. 이 경우 테스트 계획을 실행하기 위해 추가 서버를 사용해야 하므로(분산 테스트) 부하 시스템이 하나에서 두 개로 증가합니다. 따라서 테스트 계획 실행 시 비 GUI 모드를 사용하는 것이 권장됩니다. 비 GUI 모드는 인터페이스를 표시하지 않지만 주기적으로 문자 형태로 실행 결과를 보여주므로 부하 시스템의 자원 소모가 적습니다. 동일한 조건에서 비 GUI 모드의 JMeter 시스템이 생성하는 부하는 GUI 모드의 JMeter보다 더 큽니다.
3. JMeter 비 GUI 실행 매개변수
매개변수 설명:
- -n: 명령어 모드로 실행
- -t: jmx 스크립트 경로 지정 (상대 경로 또는 절대 경사 가능)
- -h: 도움말 보기
- -v: 버전 정보 확인
- -p: jmeter 속성 파일 지정 (예: jmeter.properties 파일에서 설정된 내용)
- -l: 테스트 결과를 기록할 파일 지정 (일반적으로 jtl 형식, 상대 경로 또는 절대 경로 가능)
- -s: 서버 모드로 실행 (원격 방식이며 Agent 시작)
- -H: 프록시 설정 (일반적으로 프록시 IP 입력)
- -P: 프록시 포트 설정
- -u: 프록시 계정
- -a: 프록시 비밀번호
- -J: jmeter 속성 정의 (jmeter.properties에서 설정하는 것과 동일)
- -G: jmeter 전역 속성 정의 (Global.properties에서 설정하는 것과 동일, 스레드 간 공유 가능)
- -D: 시스템 속성 정의 (system.properties에서 설정하는 것과 동일)
- -S: 시스템 속성 파일 로드 (사용자가 정의한 시스템 속성 파일을 지정하여 로드)
- -L: jmeter 로그 레벨 정의 (debug, info, error 등)
- -j: 실행 로그 경로 지정 (로그 경로를 매개변수로 받으며, 존재하지 않으면 자동 생성하지 않음, 로그를 명령어 콘솔에 출력)
- -r: jmeter.properties에 지정된 원격 부하 시스템 시작
- -R: 원격 부하 시스템 시작 (부하 시스템 IP를 지정할 수 있으며, jmeter.properties의 remote_hosts 설정을 덮어씀)
- -d: JMeter 홈 디렉토리 지정
- -X: 원격 실행 중지
- -g: 테스트 결과 파일 경로 지정 (테스트 리포트 생성에만 사용, 매개변수는 csv 결과 파일)
- -e: 테스트 완료 후 테스트 리포트 생성 설정
- -o: 테스트 리포트 생성 폴더 지정 (폴더는 반드시 존재해야 하고 비어 있어야 함)
4. JMeter 비 GUI 실행 명령어
4.1 기본 비 GUI 명령어 형식:
jmeter -n -t 테스트시나리오.jmx
사용자의MacBook-Pro:~ 사용자$ jmeter -n -t baidu.jmx -l baidulog.jtl
Creating summariser <summary>
Created the tree successfully using baidu.jmx
Starting standalone test @ Fri Feb 19 18:07:30 CST 2021 (1613729250217)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary + 1 in 00:00:01 = 0.9/s Avg: 836 Min: 836 Max: 836 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
summary + 376 in 00:00:29 = 13.2/s Avg: 381 Min: 318 Max: 938 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
summary = 377 in 00:00:30 = 12.7/s Avg: 382 Min: 318 Max: 938 Err: 0 (0.00%)
summary + 381 in 00:00:30 = 12.7/s Avg: 392 Min: 312 Max: 1824 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
summary = 758 in 00:01:00 = 12.7/s Avg: 387 Min: 312 Max: 1824 Err: 0 (0.00%)
summary + 397 in 00:00:30 = 13.2/s Avg: 378 Min: 285 Max: 1135 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
summary = 1155 in 00:01:30 = 12.9/s Avg: 384 Min: 285 Max: 1824 Err: 0 (0.00%)
summary + 404 in 00:00:30 = 13.5/s Avg: 370 Min: 261 Max: 875 Err: 0 (0.00%) Active: 5 Started: 5 Finished: 0
summary = 1559 in 00:01:59 = 13.0/s Avg: 380 Min: 261 Max: 1824 Err: 0 (0.00%)
생성된 테스트 리포트는 JMeter의 집계 보고서에서 열 수 있습니다.
4.2 비 GUI 모드로 실행하고 HTML 리포트 생성하는 기본 명령어 형식:
jmeter -n -t 테스트시나리오.jmx -l 결과파일.jtl -e -o 출력폴더
jmeter -n -t baidu.jmx -l baidulog1.jtl -e -o output/
Creating summariser <summary>
Created the tree successfully using baidu.jmx
Starting standalone test @ Fri Feb 19 19:02:37 CST 2021 (1613732557435)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary = 50 in 00:00:02 = 20.2/s Avg: 139 Min: 43 Max: 643 Err: 0 (0.00%)
Tidying up ... @ Fri Feb 19 19:02:40 CST 2021 (1613732560194)
... end of run
실행이 완료되면 생성된 파일 디렉토리의 index 파일을 브라우저로 열어 결과를 확인할 수 있습니다.