JMeter에서 사용가능한 Thread 범위를 확인하기 위해 테스트를 진행했습니다.
Heap 메모리 사용범위를 초과하게 되면 OutOfMemory Exception이 발생하였습니다.
ERROR o.a.j.JMeter: Uncaught exception in thread Thread[Thread Group 1-1842,6,main]
java.lang.OutOfMemoryError: Java heap space
리소스 최적화를 위해 적용한 사항은 아래와 같습니다.
1. 시나리오 설정 최적화
- 사용하지 않는 Sampler 비활성화
- 메모리 사용이 높은 Listner 비활성화
- "View Result Tree", Plugin 그래프 설정 비활성화
2. JMeter 힙 메모리 설정 변경
- jmeter.bat 파일 내 최소 메모리(-Xms1g), 최대 메모리(-Xmx4g) 사이즈 변경
if not defined HEAP (
rem See the unix startup file for the rationale of the following parameters,
rem including some tuning recommendations
set HEAP=-Xms1g -Xmx4g -XX:MaxMetaspaceSize=256m
)
3. CLI 환경 테스트 진행
- 명령어 예시
./jmeter -n -t jmeter-test-plan.jmx -l jmeter.log -H proxxy_Server -P 8000
-n: command line mode에서 실행
-t: Test Plan 파일명
-l: 결과 저장할 로그 파일
-H: Proxy server의 hostname
-P: 포트
- 쓰레드 3000 개 설정 후 테스트 해봐도 OOM 발생
user@MacBook-Pro bin %./jmeter -n -t /Users/user/apache-jmeter-5.6.3/plan/test_plan.jmx -l summery.log
Creating summariser <summary>
Created the tree successfully using /Users/user/apache-jmeter-5.6.3/plan/test_plan.jmx
Starting standalone test @ 2024 Sep 25 17:29:31 KST (1727252971664)
...
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Thread Group 1-2864"
<테스트 결과>
- UI 환경으로 테스트 진행하는 것이 결과 분석에 유리
- 컴퓨터 1대 기준 최대 2000 쓰레드까지 적용
- 단 Test Plan이 복잡할 경우 JMeterThread 생성 시 Heap 메모리 사용률 증가
- 쓰레드 개수를 증분 시키면서 테스트 가능범위 도출 필요. - 대용량 테스트가 필요한 경우 Jmeter Controller를 통한 분산 테스트 환경 구축 검토
성능테스트는 노가다가 필요합니다…
읽어주셔서 감사합니다.
레퍼런스
반응형
최근댓글