일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Layer 2
- 개발자취업부트캠프
- L2 통작
- DNS
- CoreDNS
- 127.0.0.53
- 메가바이트스쿨
- reclaim
- 국비지원교육
- Spring boot
- k8s
- L2 통신
- PVC
- PV
- MegabyteSchool
- ssh tunneling
- dns forward
- systemd-resolved
- RDB
- ARP
- linux dns
- MariaDB
- 내일배움카드
- 패스트캠퍼스
- linux domain
- Today
- Total
hoonii2
[SpringBoot] JMeter 를 활용한 간단한 API 트래픽 테스트 본문
1. 개요
B2C 서비스의 API 를 생각했을 때 대용량 트래픽이 발생하는 경우를 미리 테스트하고 방지하는 것이 중요하다는 생각이 들었다.
이를 테스트하기위한 방법을 찾아보던 중 Apache JMeter 를 사용하면 개발한 API 에 어느정도 트래픽을 발생시킬 수 있고 결과도 확인할 수 있다는 것을 알게 되었다.
그래서 간단한 사용 방법과 결과를 공유하고자 한다.
2. JMeter 설치 ( 윈도우 만 )
apache jmeter download 를 검색하면 쉽게 찾아올 수 있다.
여기서 Binaries 의 "apache-jmeter-5.5zip" 을 다운로드한다.
이후 압축을 푼 뒤 "apache-jmeter-5.5\bin\jmeter.sh" 파일을 실행하면 아래의 프로그램이 실행된다.
3. JMeter 설정
1) Test Plan
- Key : Value 의 설정값 Add 하여 테스트 관련 설정을 미리 지정할 수 있다.
- SERVER : 테스트 서버의 주소
- LOOPCOUNT : 테스트를 반복할 횟수를 지정
2) Thread Group 추가 후 설정
- Number of Threads : 한 테스트에 반복할 사용자 수를 지정
- Ramp-up period : 쓰레드 생성 초 단위라고 하는데, 정확한 동작은 테스트하지 않았습니다.
- Loop Count : 테스트 반복을 수행할 횟수를 지정 ( Test Plan 에서 사용한 ${LOOPCOUNT} 사용 )
3) HTTP Request
위 처럼 Protocol / Server / Port / Request Method / Path 등을 지정하고 Post 라면 Body , Get 이라면 Parameter 등 자신이 사용하는 형식에 맞게 설정
4) HTTP Header Manager
- Json 을 사용한다면 아래와 같이 Type 설정
5) View Result Tree
미리 생성을 해두고 테스트 후 Request / Response Data 를 확인 가능
6) 설정 결과
좌측 트리가 이런 형태로 구성
3. Log 확인
테스트 후 배포한 Spring Boot 서버의 Log , JWT 저장 Redis Key , JMeter Result Tree 를 확인
1) 테스트 전
2) 테스트 진행
3) 테스트 후
4. 결과
현재 LOOPCOUNT 를 2 로 지정하고, 한 테스트당 users 를 10 개로 설정하니 아래처럼 총 Request 가 20개 발생했다.
우측 상단에서 전체 테스트 소요 시간을 확인할 수 있고
각 Request 의 Load time 과 Latency 정보 등등의 자세한 정보도 확인할 수 있다.
번외로 , JWT 토큰이 일부 응답에서 모두 동일한 토큰으로 발행 되었는데 아마 토큰 내 Hash 생성 시 계정 정보 + 시간으로 발생하는데 초단위로 생성되어 이러한 결과가 발생한 것 같다.
이를 방지하기 위해 ms 단위로 발행 혹은 다른 기준을 넣으면 각 Request 에 다른 토큰을 발급하는지 확인해봐야겠다.
'개념 공부 > (개발) 02. Spring Boot' 카테고리의 다른 글
[SpringBoot] Local Spring Boot 에서 SSH Tunneling 을 통한 원격 서버 MariaDB 접근 (0) | 2023.02.10 |
---|---|
[SpringBoot] 05. Lombok (0) | 2023.02.03 |
[SpringBoot] 04. RequestParam vs RequestBody vs ModelAttribute (0) | 2023.01.27 |
[SpringBoot] 03. Object Mapper (0) | 2023.01.20 |
[SpringBoot] 02. Properties (0) | 2023.01.13 |