[Spring Boot] Jmeter로 STOMP 부하 테스트 하기

Loopy·2022년 8월 9일
0

삽질기록

목록 보기
12/28
post-thumbnail

현재 WebSocket STOMP를 사용하여 실시간 채팅을 구현하였다.
이후, 채팅 서비스의 성능을 높이기 위해 Jmeter를 사용해서 부하 테스트를 해보기로 결정했다.

1️⃣ 부하 테스트

임시로 설정해둔 스레드 그룹은 다음과 같다.

전체적인 테스트 플로우이다. 커넥션이 성공하면, 구독을 하고 채팅방에 입장함과 채팅을 보내고 보냈던 메시지를 받으면 성공이다.

1️⃣ OPEN CONNECTION

2️⃣ CONNECT

연결 되었다는 응답이 다음과 같이 와야한다.

3️⃣ SUBSCRIBE

4️⃣ ENTER CHAT

5️⃣ SEND CHAT

구독을 했었으니, 보냈던 메시지가 잘 도착 한 것을 볼 수 있다.

6️⃣ DISCONNECT

수행 결과

메시지를 보내는데 무려 207ms가 걸렸다..! 개선해야할 필요가 있어 보인다.

2️⃣ 발생했던 에러 및 해결

삽질 1

counter 설정을 해서 웹 소켓 경로를 다음과 같이 작성해줘야 한다. 아니면 서버에서 보낸 응답을 받지 못하는 Read TimeOut 오류가 난다.(이걸로 몇일을 고생했다..)

/ws/counter/{counter}/{__RandomString(8,abcdefghijklmnopqrstuvwxyz,sessionId)}/websocket

삽질 2

SEND MESSAGE에서 json 형식을 보낼때, 다음과 같은 형식으로 보내줘야 한다. 그렇지 않으면 JSON parse error: Unexpected character (‘r’ (code 114)): was expecting comma to separate Object entries 과 같이 서버단에서 메시지를 파싱해오지 못하는 문제가 발생한다.

["SEND\ndestination:/pub/chat/message\ncontent-type:application/json\n\n{\"roomId\":1,\"data\":\"hihi\",\"type\":\"CHAT\",\"sender\":\"semi\"}\n\u0000"]

참고 자료
https://hyunminh.github.io/chatting-response-upgrade/
https://forum.katalon.com/t/json-parse-error-unexpected-character-n-code-110-was-expecting-comma-to-separate-object-entries/37035/8

profile
개인용으로 공부하는 공간입니다. 잘못된 부분은 피드백 부탁드립니다!

0개의 댓글