1️⃣ 준비: 서버 켜져 있어야 함
- Spring 서버가 localhost:8080에서 실행 중이어야 해.
- 브라우저에서 http://localhost:8080/ 같은 페이지가 뜨면 OK.
2️⃣ JMeter 실행 & 새 Test Plan 만들기
- JMeter 실행
- 왼쪽 트리에서 Test Plan 보일 거야.
- 상단 메뉴 File → Save Test Plan As로 저장해두기 (나중에 날아갈 수 있음)
3️⃣ Thread Group 만들기 (가상 사용자 설정)
- 왼쪽 Test Plan 우클릭
- Add → Threads(Users) → Thread Group
오른쪽 설정에서 이렇게 입력:
- Number of Threads (users): 300 (처음은 100으로 해도 돼. 성공하면 300~1000으로 올리자)
- Ramp-up period (seconds): 30 (30초 동안 천천히 300명이 들어오는 느낌)
- Loop Count: 1 (각 유저가 “enqueue 1번”만 하도록. 폴링은 아래에서 반복 설정할 거야)
4️⃣ HTTP Request Defaults 설정 (주소 반복 입력 없게)
- Thread Group 우클릭
- Add → Config Element → HTTP Request Defaults
오른쪽에 이렇게 입력:
- Protocol: http
- Server Name or IP: localhost
- Port Number: 8080
이렇게 해두면, 이후 요청들은 Path만 적으면 돼.
5️⃣ (필수) enqueue 요청 만들기 (POST /api/lectures/1/queue)
- Thread Group 우클릭
- Add → Sampler → HTTP Request
오른쪽 설정:
- Name: 01_enqueue
- Method: POST
- Path: /api/lectures/1/queue
✅ 여기까지 하면 “각 유저가 대기열 등록”을 하게 됨.
6️⃣ (핵심) enqueue 응답에서 userKey 뽑아오기 (JSON Extractor)
이걸 해야 다음 폴링에서 ${userKey}를 쓸 수 있어.
- 왼쪽에서 방금 만든 01_enqueue를 클릭
- 01_enqueue 우클릭
- Add → Post Processors → JSON Extractor
오른쪽 설정:
- Names of created variables: userKey
- JSON Path expressions: $.userKey
- Match No.: 1
- Default Values: NOT_FOUND
✅ 이 설정의 의미:
- enqueue 응답 JSON에서 "userKey" 값을 찾아서
- JMeter 변수 ${userKey}에 넣어둔다.
7️⃣ 폴링 반복을 위한 Loop Controller 만들기
- Thread Group 우클릭
- Add → Logic Controller → Loop Controller
오른쪽 설정:
- Loop Count: 30 (각 유저가 30번 폴링 → 1초 간격이면 약 30초 동안 기다리는 느낌)
8️⃣ 폴링 요청 만들기 (GET /api/lectures/1/queue/me?userKey=...)
- Loop Controller 우클릭
- Add → Sampler → HTTP Request
오른쪽 설정:
- Name: 02_poll_me
- Method: GET
- Path: /api/lectures/1/queue/me
그리고 아래 Parameters에 추가:
- Name: userKey
- Value: ${userKey}
✅ 이게 “enqueue로 받은 userKey로 내 순번 조회”를 반복 호출하는 구조야.
9️⃣ 폴링 간격 1초 주기 만들기 (Timer)
- Loop Controller 우클릭
- Add → Timer → Constant Timer
오른쪽 설정:
- Thread Delay (in milliseconds): 1000
✅ 이게 “1초마다 폴링”이야.
🔟 결과 확인용 Listener 추가
초보자는 이 2개면 충분해.
- Thread Group 우클릭
- Add → Listener → Summary Report
- 다시 Thread Group 우클릭
- Add → Listener → View Results in Table (처음 확인용)
⚠️ 주의: 너무 많은 Listener 추가하면 측정이 왜곡될 수 있어. 딱 이 정도만.
🔥 실행 전에 “정상 동작” 빠르게 확인하는 방법
실행하기 전에, 요청이 진짜 잘 되는지 1명만으로 테스트해보자.
- Thread Group 클릭
- Users를 1, Ramp-up 1, Loop 1로 바꾼다.
- 상단 ▶️ 실행
- View Results in Table에서 응답이 200 OK인지 확인
✅ 여기서 enqueue 응답에 userKey가 있고, poll 응답이 JSON이면 성공.
그 다음 다시 Users 300으로 올리자.
폴링테스트B 구조
├─ 01_enqueue
│ └─ JSON Extractor
├─ Loop Controller (30)
│ ├─ 02_poll_me
│ └─ Constant Timer (1000)
├─ Summary Report
├─ View Results in Table
└─ HTTP Request Defaults'프로젝트 > 스프링 부트 3 백엔드 개발자 되기 Blog + 선착순 강의 프로젝트' 카테고리의 다른 글
| ⏰💡 폴링 API 부하 테스트 (500명 실험) (0) | 2026.02.15 |
|---|---|
| ⏰💡 JMeter 구성 요소 해석해보기 (1) | 2026.02.15 |
| ⏰💡 선착순 강의에서 비관적 락(PESSIMISTIC LOCK)을 사용한 이유? (0) | 2026.02.15 |
| ⏰ 선착순 강의 대규모 트래픽 처리 – Redis 2차 설계 (0) | 2026.02.15 |
| ⏰🚨 신청 버튼을 누르지도 않았는데 자동으로 신청되는 문제 (Redis 대기열 + localStorage 이슈) (0) | 2026.02.14 |