일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- game
- mongoose
- AWS
- Queue
- react
- flask
- nodejs
- GIT
- TypeScript
- JavaScript
- 정렬
- Nest.js
- MySQL
- cookie
- nestjs
- typeORM
- Sequelize
- 공룡게임
- OCR
- Bull
- 게임
- MongoDB
- Express
- jest
- Python
- class
- dfs
- 자료구조
- Dinosaur
- Today
- Total
포시코딩
[동시성 문제] Apache JMeter를 이용한 테스트 본문
개요
위 포스팅에서 얘기한 동시성 문제를 테스트하는 과정에서
클라이언트단에서 여러 POST 요청 코드를 한번에 실행하는 방법이
오차가 있을 수 있고 판단이 있어 툴을 통해 테스트하는걸로 의견이 좁혀졌다.
여기서 스트레스 테스트 툴인 JMeter를 쓰면
원하는 과정을 진행할 수 있을것 같다고 생각해 진행하게 되었다.
사용 방법에 대해서는
https://creampuffy.tistory.com/209
위 블로그에 너무나도 친절히 나와있기 때문에 생략하고
요점만 정리해보고자 한다.
사용 방법
사용하기에 앞서 요청을 받을 controller는 다음과 같다.
boards.controller.ts
@Post(':id/join')
async joinGroup(@Param('id') boardId: number, @Req() req: Request) {
const { userId } = req.cookies;
if (userId === '' || isNaN(userId)) {
console.log('BadRequestException - userId: ' + userId);
throw new BadRequestException('userId가 잘못되었습니다.');
}
return await this.boardsService.addJoinQueue(boardId, parseInt(userId));
}
동시성 테스트에 앞서 일단
쿠키가 없을 때랑 쿠키가 있을 때로 나눠 응답이 잘 오나 테스트를 진행해보았다.
쿠키가 전송되지 않은 요청
요청 결과
요청 정보를 보면 쿠키가 없다.
쿠키 설정
key=value가 userId=101인 쿠키를 설정해 다시 요청해보았다.
요청 결과
요청에 대해서 201 응답을 받았고 DB에도 잘 저장된 것을 볼 수 있다.
동시성 테스트
위에서 쿠키가 있을 때의 테스트한 HTTP Request를 복사해 5개로 만든 다음
각각 이름을 부여하고 Cookie value도 다르게 부여해주었다.
React 클라이언트 서버에서 수고롭게 세팅했던 요청에 대한 응답 결과와 똑같은 결과를 확인할 수 있었다.
정리
처음에는 해당 테스트를 진행하기 위해 임시로 배포 서버에 올린뒤 팀원들이 동시에 버튼을 따닥 눌러야되나?
라고까지 생각을 했었는데
JMeter를 통해 이렇게 쉽고 빠르게 원하던 동시성 테스트를 하게 됐다는 사실에 너무 만족해버렸다.
앞으로도 매우매우 자주 애용할 것 같고
동시성 테스트 뿐만 아니라 나중에는 응용해서 원래 툴의 목적인 스트레스 테스트 또한 진행하여
소개한 블로그에 나와있듯 테스트 결과에 대해 HTML 보고서로 뽑아 쓰면
아주 그럴듯한 결과물이 나올 것이라 예상한다.
이렇게 무기가 하나 또 생긴 느낌
'Node.js' 카테고리의 다른 글
[Nest.js] 캐싱 사용해보기 (0) | 2023.02.22 |
---|---|
[Nest.js] FormData 전달받기 with multer (0) | 2023.02.22 |
[Nest.js][동시성 문제] Bull Queue (0) | 2023.02.18 |
[Nest.js][동시성 문제] Transaction 사용과 통 Lock 걸어버리기 (0) | 2023.02.17 |
[Nest.js][CORS] cookie를 전달받지 못하는 문제 (0) | 2023.02.17 |