선행 지식
성능 테스트시 꼭 알고 가야하는 개념이 있는데, 바로 응답시간과 TPS다.
이 둘은 성능 테스트의 중요한 지표이다.
응답시간(Response Time)
- 클라이언트가 서버에 요청을 하고 그 요청에 대한 응답을 받을 때까지 걸린 시간을 의미한다.
- 응답 시간은 아래의 두가지로 분류 가능하다.
- 처리 시간(Processing Time) : 실제 서버가 요청을 처리하는데 걸린 시간
- 대기 시간(Latency Time) : 클라이언트와 서버간에 데이터를 주고 받는데 걸리는 시간
응답시간(Respose Time) = [동시 사용자 수 / 초당 요청 수(TPS)] - 인지시간(Think Time)
TPS(Throughput)
- 서버가 초당 처리할 수 있는 요청의 개수를 나타낸다.
- TPS 가 높을 수록 초당 처리할 수 있는 요청의 수가 많다.
초당 요청 수(TPS) = 동시 사용자 수 / 응답시간(Response Time) + 인지시간(Think Time)
JMeter 설치
아파치 재단이 제공하는 오픈소스로 공식 사이트 에서 다운로드 가능하다.
JMeter는 JAVA 기반이기 때문에 자바가 깔려 있어야 한다!
모든 설치/실행 과정은 Mac OS를 기반으로 진행
설치는 여러 방법으로 진행할 수 있지만, 필자는 직접 파일을 다운받는 방법을 선택하였다.
![](https://blog.kakaocdn.net/dn/2pXlN/btr0JPqyTpH/pWigKo2AskWWHrRC4IjxF0/img.png)
- 압축 파일을 다운로드 받고 압축을 풀어주자.
- /bin 디렉터리 이동 -> cd /bin
- jmeter 실행 -> ./jmeter
+ 한글 깨짐 방지
Request 나 Response Data에 한글이 있다면 설정 해주세요.
/bin/jmeter.properties 에 아래 구문 추가해주시고 재시작 해주시면 적용됩니다.
#sampleresult.default.encoding=ISO-8859-1
sampleresult.default.encoding=UTF-8
아무래도 외국에서 만든거라 Default Encoding이 ISO-8859-1로 되어있네요.
+ 그래프 플러그인 (Graph Plugin)
JMeter 에서 기본적으로 제공하는 그래프도 있지만, 저는 TPS를 보기 위하여 외부 플러그인을 추가로 설치 해주겠습니다.
https://jmeter-plugins.org/?search=jpgc-graphs-basic
JMeter Plugins :: JMeter-Plugins.org
jmeter-plugins.org
다운 받으셨다면 /iib 폴더 안에 넣어 주세요.
![](https://blog.kakaocdn.net/dn/RoOwz/btr0NHMj6Kn/U4jWRFL5b8ecgRc8n6kfz0/img.png)
Listener 밑에 추가된 것을 확인할 수 있습니다.
JMeter 설정
실행 하게되면 볼 수 있는 기본 화면 입니다.
![](https://blog.kakaocdn.net/dn/bcrqEz/btr0Dh20lU1/8lkuXNk5J92ZWKVZRSiRqk/img.png)
Thread 그룹 생성
Test Plan -> Add -> Threads(Users) -> Thread Group
- Number of Threads (users) : 스레드수 - 유저 수
- Ramp-up period (seconds) : 지정된 유저가 모두 로딩될 시간
- Loop Count : 반복 횟수
![](https://blog.kakaocdn.net/dn/3AYNh/btr0KQQmKRX/yr5Lk3iSl2audSDKBJWVjk/img.png)
저는 1초에 50번의 부하를 100번 반복하도록 설정했습니다.
Sampler 생성
Http 요청을 해야하니 HTTP Request를 생성하겠습니다.
Thread Group -> add-> Sampler -> HTTP Request
![](https://blog.kakaocdn.net/dn/cgksMX/btr0IHl4Epl/KvKvVok8aeVoKZsE6r7Gvk/img.png)
Web Server란에 서버 이름 or IP와 포트 번호를 넣고
Path에 나머지 URI를 입력하면 됩니다. 프로토콜은 http가 Default 인거 같네요.
저는 POST 요청을 보내야 해서 Body Data도 추가로 설정 해주었습니다.
+ 내용이 많을 경우에는 jmter가 응답없음 상태로 변경될 수도 있다하니 files Upload를 씁시다 !
POST 요청시 추가 설정
POST 로 요청시에는 HTTP Header 설정을 추가로 해주어야 합니다.
생성한 Sampler -> Add -> Config Element -> HTTP Header Manager
![](https://blog.kakaocdn.net/dn/bfuzqO/btr0KHFRv8f/iaVbULg2KT4cArIGbnHHw0/img.png)
여기서 Add를 클릭하여 Content-type : application/json 값을 넣어 줍니다.
참고로 여기서 Authorzation 같은 헤더 값들을 설정해줄 수 있습니다.
Listener 생성
Listener는 Test Plan, Thread Group, Sampler 까지 단위별로 설정 가능한거 같습니다.
저는 이번 포스팅에선 Thread Group에 Listener 설정하겠습니다.
Listener 종류가 많은데 저는 3가지만 소개하겠습니다.
- View Results Tree
- Summary Report
- TPS Graph
![](https://blog.kakaocdn.net/dn/ch7Ztx/btr0JN0BoAD/ikaJIoKPxnH1jXwWKDwFO0/img.png)
상단의 초록색 스타트 버튼(누가봐도 시작 버튼)을 누르면 요청이 갑니다.
비교를 위해 테스트 케이스를 2개 생성했습니다.
View Results Tree
브라우저의 개발자 도구라고 생각하시면 됩니다.
개별 요청의 Request / Response를 볼 수 있습니다.
응답 body 까지만 확인 가능합니다.
![](https://blog.kakaocdn.net/dn/dcJ44g/btr0RPXDaRF/jDkKKx64aUX3xfQtXKS101/img.png)
Summary Report
전체적인 요약본 입니다.
평균, 최소, 최대의 단위는 ms입니다.
Label - Sampler 이름
Samples - requset 개수
Average - 응답 평균
Min - 응답 최소
Max - 응답 최대
Std. Dev. - 응답 표준편차
Error % - 에러율
Throughput - 시간당 처리량
Received KB/sec - 시간당(sec) 받은 데이터(KB)
Sent KB/sec - 시간당(sec) 보낸 데이터(KB)
Avg. Bytes - 평균 바이트
![](https://blog.kakaocdn.net/dn/dspuZS/btr0NIkcSu6/fMdyEsQCyDjEB3DsOktV1K/img.png)
TPS Graph
TPS 수치를 그래프로 볼 수 있습니다.
![](https://blog.kakaocdn.net/dn/SWPIo/btr0RJJTpZd/4OfLooOnBfT0N4PH0vF7Kk/img.png)
출처: https://leeggmin.tistory.com/10 [지민의 성장일지:티스토리]
'🐸Utils' 카테고리의 다른 글
[ubuntu] MariaDB 설치 (1) | 2023.12.26 |
---|---|
[ubuntu] MariaDB 재설치 (0) | 2023.12.26 |
[Utils] Tomcat 설치 및 firewall 방화벽 허용 (1) | 2023.12.23 |
[CentOS] MariaDB 설치 및 세팅 (1) | 2023.10.28 |
[Ubuntu] Tomcat 8.5 설치 및 jdk11 버전 설치 (0) | 2023.10.22 |