일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- android
- 한글
- 안드로이드
- it
- java
- 구글
- 자바
- server
- kakao
- techEmpower
- Portfolio
- 개발자
- error
- C lanuage
- H2O
- 개발
- 컴퓨터과학총론
- mariadb
- unity
- C
- 해석
- 번역
- MySQL
- php
- javascript
- ubuntu
- centOS7
- caddy
- 프래그먼트
- NGINX
- Today
- Total
개발모음집
Jmeter 사용법 본문
설치
벤치마크를 수치화하여 보기 위해 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
로 변경
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에 대한 책인데 e-book 샘플로 앞 30장정도나옴, 그래도 볼만함
어떻게 하면 성능 테스트가 신뢰성이 있는가를 알아봐야한다.
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
'Benchmark' 카테고리의 다른 글
apache(아파치), nginx(엔진엑스), caddy(캐디) Web Server Benchmark (0) | 2017.10.21 |
---|---|
vmware 가상서버 포트포워딩 (0) | 2017.10.15 |
TechEmpower Source code & Requirements 한글 번역 (0) | 2017.09.22 |
TechEmpower Benchmarks Document 한글 번역 (0) | 2017.09.21 |
TechEmpower Environment 한글 번역 (0) | 2017.09.20 |