데블 아니고 데블리

운동,햄버거, 개발 좋아요

🐷💻📝

DAITEM/기술스텍 및 정리

[테스트] Jmeter 사용하기 (with 동시성제어 , HttpMediaTypeNotSupportedException 해결)

데블아니고데블리 2024. 5. 6. 21:51

[Jmeter]

아파치(Apache)에서 개발한 성능 테스트 도구

Java 기반으로 동작해 GUI 를 통해 테스트 시나리오를 작성하고 테스트 결과를 시각적으로 볼 수 있다

다양한 프로토콜과 분산 테스트를 지원한다

 

[Mac OS 에서 설치방법]

1. 자바 설치확인

터미널에

 java --version

검색해서 아무것도 안나오면 .. 설치하세요

 

2. Jmeter 다운로드 저는 홈브류로 설치했습니다

brew install jmeter

 

3. 실행 

터미널에 jmeter (엔터)치면 실행됩니다


[테스트 시나리오]

- Test Plan (우클릭) Add Threads(Users)Thread Group 을 만듭니다

 

 

테스트 시나리오는 이렇다.

수량은 10개고, 10000명의 사용자가 들어올 것을 예상한다. 수량이 10개밖에 없기 때문에 엄청 빠르게 품절이 될 것이다. 그렇지만 요청 결과를 보기 위해? 딱 10건만 성공하는 것인지 보기 위해 60초로 설정했다

 

- Number of Threads(동시에 작업을 수행할 사용자 수, 몇명 들어올 예정일까요?) : 10000명의 사용자

- Ramp-up-period(seconds)(동시에 몇분동안 들어올까요?): 60초(1분동안)

- Loop Count(사용자가 몇번을 더 시도를 해볼까요?): 1번 반복한다

 

테스트를 하기 위해 회원 데이터를 넣어줄겁니다. 미리 준비한 CSV 파일을 넣어줍니다.

사용자 id만 가지고 요청을 보내려고 해요.. 이유는 ? 누가 보낸 요청인지 알기 위해서죠! 예약구매사이트에서는 필수!

 

- Test Plan (우클릭)  Add  ConfigElement CSV DataSetConfig 을 만듭니다

CSV 파일의 내용은 이렇게 되어있습니다.

user_id
1
2
3
4
5
....
10000

첫번째 줄에 user_id 가 있으니까

Variable Names(comma-delimited)에 user_id, 그 아래 Ignore first line에 변수 처리 해둔다

 

그리고 나서 주문 요청을 해야 하니까

Add Sampler HttpRequest 를 만들어 줍니다.

 

각자의 사정에 맞게 작성해줍니다

protocol : http, https 인지 작성하기

Server Name or IP : DNS 주소, 혹은 ip 주소, 저는 local 에서 테스트할 것이기 때문에 localhost 로 작성했습니다

Port Number: 보낼 포트 번호

 

이렇게 하고 실행시켜 보면 ? 

: Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'text/plain;charset=UTF-8' is not supported]

라는 메세지를 만날 수 있는데, header 를 설정하지 않아서 그렇습니다.

만든 request(우클릭) Add Config Element Http Header Manager 로 들어갑니다.

 

라이언 옆에 Add 추가하여 

 

Content-Type application/json 적어줍시다

 

그리고 run 해준다면 엄청난 로그를 볼 수 있습니다! 결과는 WIL에 적을게요!

'DAITEM > 기술스텍 및 정리' 카테고리의 다른 글

[redis] 캐시(cache) 전략  (0) 2024.05.20