개발모음집

Jmeter 사용법 본문

Benchmark

Jmeter 사용법

void 2017. 10. 6. 12:05

설치


벤치마크를 수치화하여 보기 위해 Jmeter 툴을 이용하였다.

리눅스에서 공식홈페이지에 들어가 다운로드를 받고 압축을 풀면 "apache-jmeter-3.3" 폴더가 생긴다.

"apache-jmeter-3.3/bin" 폴더에 들어가서 터미널의 켜자

그리고 터미널에 "./jmeter" 라고 입력을 하면 프로그램이 실행이 된다.


플러그인 추가


쓸만한 그래프를 보려면, plugin도 같이 설치하는게 좋음.

주소에서 다운받고, 압축푼 후 JMeterPolugins.jar 파일을  jMeter설치디렉토리\lib\ext  안에 복사해주고

JMETER 실행한 후에 

option - plugins manager - available plugins에서 추가하고 싶은 jmeter 플러그인 설치


단어설명 

ThreadGroup(각종 테스트가 일어나는 곳)

-샘플러(클라이언트가 서버에 요청하는 행위)

-리스너(클라이언트가 서버에서 응답받는 행위, 그래프로 그려줌)


동작방식

참고 블로그



"Action to be taken after a Sampler error" 

 - 실행 중 에러 발생시 어떻게 처리할 것인지에 대한 선택


"Thread Properties"

 - 루핑도는 방법


1. "Number of Threads(users)" 

 - 한번에 몇개의 쓰레드를 생성할것인지, 즉 동시에 몇명의 가상 사용자로 테스트할것인지에 대한 설정값이다.  일반적으로 이 값이 커질수록 서버에 대한 부하는 커지게 된다.

2. "Ramp-up Period(in seconds)" 

 - 한번의 실행을 몇초동안 완료시킬 것인지 나타내는 값. 즉, 서서히 사용자가 증가하는 역할을 하고자 할 때 쓰임.

 - "Number of Thread :5, Ramp-up Period:3, Loop Count:10" 이면 0.6(3/5)초 간격으로 5개의 스레드가 기동되고 10번을 반복 실행하라는 의미가 된다.


3. Loop Count 

 - 반복하고자 하는 횟수

참고로 schedule 를 선택하면 예약 실행도 가능하다.



* VIEW Results Tree

 - 각각의 요청, 응답, 실제 데이터들을 보여줍니다.

 - Response data 탭에 보시면, 응답값에 해당하는 상세한 값을 확인할 수 있습니다.

 - 저는 hi 라는 txt 구문만 있기 때문에 hi 만 출력되었습니다.



Http Request 실험방법


1. TestPlan에서 오른쪽 버튼 - Add - Thread (User) - Thread Group 


Number of Thread 등 설정해준다. 




2. Thread Group 에서 오른쪽 버튼 - Sampler - Http Request


Web Server

ServerName : cmd에서 ifconfig로 검색해서 나온 ip 주소 입력

Port Number: 80


(만약 로그인 가정을 한다면)

Http Request - Method를 Post로 설정

Path는 php 파일명 (apache라면 /var/www/html, nginx라면 /usr/share/nginx/html/가 기본루트일 것이다. 수정했다면 어쩔 수 없음, 무튼 거기에 있는 로그인 php 파일에 데이터를 날리는 것)

Parameters에 

name: email value: void@tistroy.com

name: pw value: password123!

이런식으로 클라이언트 설정



3. 서버쪽에 데이터를 처리하는 파일을 만들자

 ThreadGroup 에서 오른쪽 버튼 - Add - Listener - View Results Tree (다른 거 해도 됨)




이런식으로 결과가 나오는것을 알 수 있다.

다른 리스너를 이용하면 다르게 나온다.


대역폭(bandwidth) 조절


CPS는 cps(character per second) 를 의미합니다. 

보통 Network 대역폭은 bps(bit per second) 단위입니다. 

CPS로 환산활 때는 bps/8로 계산해야 합니다. 

예를들면 100Mbps이면 CPS로는 125Kcps 입니다.

그리고 HTTP Request에서 implemetation 부분을 HttpClient 3.1 or HttpClient 4로 설정해야 합니다.

참고 사이트


나는 10Mbps로 대역폭을 설정하고 싶다.


apache-jmeter-3.3/bin/jmeter.properties 파일에 가서

httpclient.socket.http.cps=108000

httpclient.socket.https.cps=108000

로 변경


108000인 이유

Some examples:

Network bandwidth

cps value

Mobile data GPRS : 171 kbit/s

21888

Mobile data EDGE : 384 kbit/s

49152

Mobile data HSPA : 14,4 Mbp/s

1843200

Mobile data HSPA+ : 21 Mbp/s

2688000

Mobile data DC-HSPA+ : 42 Mbps

5376000

Mobile data LTE : 150 Mbp/s

19200000

WIFI 802.11a/g : 54 Mbit/s

6912000

WIFI 802.11n : 600 Mbit/s

76800000

Ethernet LAN ; 10 Mbit/s

1280000

Fast Ethernet : 100 Mbit/s

12800000

Gigabit Ethernet : 1 Gbit/s

128000000

10 Gigabit Ethernet : 10 Gbit/s

1280000000

100 Gigabit Ethernet : 100 Gbit/s

12800000000

WAN modems V.92 modems : 56 kbit/s

7168

ADSL : 8 Mbit/s

1024000

ADSL2 : 12 Mbit/s

1536000

ADSL2+ : 24 Mbit/s

3072000


참고자료

jmeter에 대해 자세히 나와있는 슬라이드쉐어

한빛미디어에서 나온 jmeter에 대한 책인데 e-book 샘플로 앞 30장정도나옴, 그래도 볼만함


어떻게 하면 성능 테스트가 신뢰성이 있는가를 알아봐야한다.



http://myinbox.tistory.com/27


file:///C:/Users/tristan/Downloads/FILE-20140105-000089_140105172849_1.pdf


https://www.slideshare.net/unclepig/hw-52143996?next_slideshow=1





리눅스에서 메모리 확인법


내 컴퓨터에서 가상서버를 돌리고,

http2를 이용하여 테스트를 했기 때문에 메모리 사용률이 중요했다.

(http2로 2000명만 접속테스트를 해도 jmeter가 꺼지는 현상 발생, 아마 http2 header 압축을 해서 메모리 사용하는 것으로 추측)



리눅스 메모리 용량 확인

cat /proc/meminfo | grep MemTotal

리눅스 메모리 사용률 확인

sar -r 1