본문 바로가기

아키텍처 Architecture/Troubleshooting 트러블슈팅

JMeter 성능 부하테스트 기본 사용법 1) + Cache 부족 해결

0. JMeter란? 

부하테스트를 위한 오픈소스 유틸리티 (Apache 프로젝트로 무료).

비슷한 프로그램으론 상용버전으로 라이센스비가 매우 비싸지만 유용한 로드러너(Load runner)가 있다.

 

 

1. 설치방법

Apache JMeter 홈페이지에서 Download.

Binaries 버전을 추천하며 다운로드 후 압축해제, bin 폴더에서 jmeter.bat 실행

 

jmeter.apache.org/

 

Apache JMeter - Apache JMeter™

Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to oth

jmeter.apache.org

 

2. 기본 사용법

1) 부하테스트를 위해 Thread 개수를 설정. 경우에 따라 여러개의 vm 또는 물리기기를 원격으로 제어

   (controller - agent 관계)

  처음 프로그램 실행시 Threads Group 부터 만들어서

Thread 개수와 Ramp-up 시간(부하를 점차 상승시키는 시간) 등을 설정

 

 

2) Recording 방식으로 Script 작성할 경우 Thread Group에 Recording Controller 추가

3) Plan에 HTTP(S) Test Script Recorder 추가

 

4) HTTP(S) Test Script Recorder에서 Proxy 포트 설정 후 Start 클릭하고

 

  테스트 컴퓨터에서도 제어판 > 프록시 설정 포트 동일하게 맞추기

 

5) Recording Controller에 네트워크 기록 쌓이는 것 확인 가능

 

 

3.  Trouble Shooting : Cache 부족 현상 해결상황

 

* 문제상황

- JSR223 Assertion을 증가시키자 부하테스트시 CPU와 MEM등의 값이 비정상적인 추이를 보였다. 

- 부하가 과한 상황도 아니었고 (CPU 30~40%) Ramp-up 중인 상황이어서 테스트 대상인 App, DB 또는 서버가 아닌 JMeter에서 설정 등의 문제가 의심됐던 상황

 

* 해결방법 1줄요약

- bin 폴더의 jmeter.properties에서 jsr223.compiled_scripts_cache_size를 늘려준다.

  (JSR223 Assertion을 늘린게 문제였고, cache compiled script if available 옵션이 문제였다.)

 

*참고내용

JMeter 는 Apache에서 만들었기에 Apache에서 만든 프로그래밍 언어인 Groovy를 적극 지원한다.

 

Groovy는 JVM에서 실행되는 스크립트 언어로 JAVA 문법과 유사하며 호환성이 높아 Java 클래스를 그대로 사용할 수 있다.

 

JMeter 기능 중 JSR223Assertion 이라는 기능이 있다.

JSR : JVM에 Embedded된 Script. 여기서는 Groovy를 뜻한다고 생각하면 된다

Assertion이란 사전적 의미로 주장, 진술 등의 의미를 가지는데, 

여기서는 데이터가 맞는지 검증한다는 뜻이다.  

Ex> 부하테스트로 return 받은 Body나 변수 값이 잘못되었으나 HTML 200으로 return 받은 경우,

Transaction이 잘못됐다고 봐야하나 Html 200으로 인한 Success가 되는것을 방지하기 위함.

 

위 메뉴 중 Cache compiled script if available 이라는 체크 메뉴가 있는데 

Groovy 실행을 위해 스크립트를 컴파일해 Cache에 올려놓는다는 뜻이다.

 

문제는 해당 옵션이 켜져있는 Assertion이 많아지면, JMeter의 Cache가 부족해 부하 테스트시 불안정한 값을 보인다.

(Ex> 그래프가 이유없이 흔들리는 등의 상황)

 

이럴때는 bin 폴더의 jmeter.properties 설정 파일의

 

# Used by JSR-223 elements
# Size of compiled scripts cache
#jsr223.compiled_scripts_cache_size=100

 

아래 cache_size를 늘려주는 식으로 해결 가능하다.

반응형