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를 통한 분산 테스트 환경 구축 검토

 
성능테스트는 노가다가 필요합니다…
읽어주셔서 감사합니다.
 

레퍼런스
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기