티스토리 뷰

728x90
반응형

본 글은 JMeter 3.1을 활용한 성능 측정 가이드입니다.

 

LoadRunner, Strobus등 상용 툴을 통해 성능 측정을 할 수 있지만, 무엇보다 돈이 문제가 되겠죠..

물론 상용툴을 통해 정확하고 자세한 분석을 진행하고자 한다면, 본 글은 여기서 그만 보기를 추천합니다.

 

해당 글은 단순 페이지에 대한 성능 측정 또는 BandWhith를 측정하기 위해 Jmeter를 사용하는 방법을 가이드 합니다.

 

1. 먼저 JMeter를 다운 받습니다.

http://jmeter.apache.org/download_jmeter.cgi

 

해당 URL에 접속하여 현재 최신 버전인 JMeter 3.1을 다운받습니다.

본인은 다수의 바이너리 중

apache-jmeter3.1.tgz을 다운 받았습니다. (apache-jmeter-3.1.gz)

 

2. 압축해제

압축을 해제하면 다음과 같은 디렉토리를 확인할 수 있습니다.

 

3. binary 실행

apache-jmeter 하단의 bin directory에 jmeterw.cmd를 실행합니다.

다음과 같은 초기 화면을 확인할 수 있습니다.

 

4. Thread Group 생성

TestPlan 우클릭 ==> Add ==> Thread(Users) ==> Thread Group 클릭

 

다음과 같은 화면을 볼수 있습니다.

해당 화면 중 주요 요소는 다음과 같습니다.

​[Thread Properties]

JMeter 3.1 메뉴얼 상의 내용입니다.

A Thread Group defines a pool of users that will execute a particular test case against your server. In the Thread Group GUI, you can control the number of users simulated (num of threads), the ramp up time (how long it takes to start all the threads), the number of times to perform the test, and optionally, a start and stop time for the test.

See also tearDown Thread Group and setUp Thread Group .

When using the scheduler, JMeter runs the thread group until either the number of loops is reached or the duration/end-time is reached - whichever occurs first. Note that the condition is only checked between samples; when the end condition is reached, that thread will stop. JMeter does not interrupt samplers which are waiting for a response, so the end time may be delayed arbitrarily.

위 내용의 요약사항은

- Number of Threads (users) : 동시접속자수를 지정한다. 
- Ramp-Up Period (in seconds) : Think Time 즉 서비스를 사용자 패턴을 감안하여 해당 User가 몇초에 한번 서비스를 클릭하는지를 선정한다. ex) 1은 1초에 한번 사용자가 페이지를 클릭한다는 의미로 해석하면 됨
- Loop Count : 위 2가지 설정을 기반으로 몇번 반복해서 서버측으로 요청을 전송할 것인지를 결정한다.

 

위와 그림과 같이 1,1,1로 설정되어 있을 경우 해당 JMeter는 1명의 User가 1초에 한번씩 1번 반복해서 호출한다는 의미로 해석하면 됩니다.

 

[Scheduler 활용]

Scheduler Combo Box Check 시 하단의 Configuration이 활성되 됩니다.

원하는 시간대에 Duration, StartupDelay를 설정하여 JMeter를 수행할 수 있습니다.

 

5. HTTP Request 생성

Thread Group 우클릭 ==> Add ==> Sampler ==> HTTP Request 클릭

각종 Sample이 존재하며 이중 HTTP Request 를 선택한다.

(JMS Publisher, Subscriber, LDAP Request, STMT Sampler, SOAP/XML-RPC Request 등 다양한 Sample Test가 가능하다)

선택이 완료되면 다음과 같은 화면이 생성된다.

주요 요소는 다음과 같다.

Server Name or IP : Test를 원하는 서버의 도메인 또는 IP를 입력한다.

​(EX-www.google.co.kr or 192.168.x.x or localhost ..등등)
Port Number : 서비스 포트를 입력한다.

(EX-HTTP 80, HTTPS 443 or 사용자 임의 Port)

Protocol[http] : Default http protocol을 사용하며 https or ws or ftp 등 Protocol의 변경이 필요할 경우 입력한다.

Method : Method 전송 방식을 선택한다.

(EX-GET, POST, HEAD, PUT등 다양한 방식을 선택할 수 있다)
Path : Context Path 정보, Drictory 정보, File 정보, Query String 정보가 포함된다.

(EX- https://192.168.2.31:6666/test.jsp가 호출 된다면 아래와 같은 형식으로 입력이 되어야 한다.)​

6. 실행 및 결과 확인

추가한 HTTP Request 우클릭 ==> Add ==> Listener ==> View Results Tree 클릭

클릭하면 다음과 같은 화면이 출력됩니다.

상단의 초록색 시작버튼을 클릭하면 다음과 같이 실행 됨을 확인 할 수 있습니다.

Text Box의 HTTP Request 오른쪽 초록색 표시가 나오면 정상 Response(200 OK)​를 받았을 경우이며, Request가 실패되었을 경우 빨간색 표시가 나옵니다.

오픈쪽 Sampler result를 통해 정보를 수집할 수 있습니다.​ 

 

7. JEUS Thread Monitoring 확인

본인은 JEUS 엔지니어로써 해당 JMeter Request를 JEUS7으로 전송하였습니다.

전송한 정보는 Thread.sleep(10000);을 주었으며, 이에 대한 결과는 다음과 같습니다.

http://192.168.x.x:8088/sleep.jsp

 

Request를 동시에 전송하는 것을 기준으로 하나 약간의 Interval은 있는 것 같네요. elapsed Time의 차이가 있는 것으로 보아..

 

그럼 JMeter를 활용하여 기본적인 성능 측정에 활용하시기 바랍니다.

 

감사합니다.

 

 

# 댓글과 추천은 글쓴이에게 힘이됩니다.! 

728x90
반응형