Rlog

[M1] Apache Jmeter로 Socket Server Test 하기 본문

Java

[M1] Apache Jmeter로 Socket Server Test 하기

dev_roach 2021. 9. 24. 19:41
728x90

최근 회사에서 소켓 서버를 구현하게 되면서, 스트레스 테스트를 할 일이 필요해졌다.

 

처음에는 Go 언어로 Client 코드를 직접작성했으나, 단순 연결성이나 메세지를 주고 받는 정도에 그쳤고, 더 많은 부가 정보를 알기 위해서는 기존에 좋은 테스트 툴을 사용하는 것을 추천받았다.

 

두 가지정도의 방안을 생각했는데, 첫번째로는 Naver 가 만든 Ngrinder 이라는 테스트 툴이였다.

이미 유명한 툴이고 많은 이들이 사용하고 있을 툴이라고 생각한다. Groovy 로 Script 를 구성할 수 있는게 매력적이였다.

 

http://naver.github.io/ngrinder/

 

nGrinder

Please post questions in Discussions not Issues. nGrinder 3.5.3 version is now available. Check the changes at here. nGrinder is a platform for stress tests that enables you to execute script creation, test execution, monitoring, and result report generato

naver.github.io

 

기존 HTTP 테스트를 하기에는 상당히 괜찮아 보였다.

 

하지만 카카오 기술블로그에서 소켓테스트 관련 글을 읽었을때 nGrinder 의 소켓테스트는 조금 부정확하다는 글을 보아서 Jmeter 를 사용해보도록 했다. (일단 Jmeter 로 해보고 nGrinder 도 이용해볼 예정이다. 그때 또 다시 포스팅 하도록 하겠다.)

 

일단 여기서 Jmeter 를 다운받을 수 있다.

http://jmeter.apache.org/download_jmeter.cgi

 

일단 Jmeter 를 키고 WebSocket Plugin 을 설치하자

 

apache-jmeter - bin 으로가서 ./jmeter 를 치자.

 

상단에 option - plugin manger 에서 가능하다.  없다면 plugin-manger 를 lib-ext 에 다운받아서 넣어주면 된다.

나는 Doorn 을 이용할 것이다.

 

일단 연결 테스트를 위해서는 Jmeter 에서 Thread Group 을 생성해주어야 한다.

내가 얼마만큼의 스레드 풀을 이용해서 Connection 을 맺을지를 일단 테스트 하기 위해 아래와 같이 생성해주었다.

이제 내가 올린 서버에 한번 붙는지 테스트 해보자

 

일단 스레드 그룹은 100 개의 스레드가 5초 간격으로 순차적으로 실행되게 할 것 이다.

위와 같이 설정해주면 된다. 그럼 우리의 소켓서버에 100명의 유저가 5초 간격으로 즉 500초 동안 100명이 들어오는 시나리오이다.

뭐 로그인을 통해 APP_KEY 와 같은것을 받아야 한다면, 따로 test case 에서 Http Request 를 만들어서 진행하면 된다. Response Extract 도 된다.

 

지금  까지 Jmeter 에 관해 간단하게 알아봤다. 뭐 괜찮은 툴인거 같은데 Ngrinder 도 한번 사용해봐야겠다. 이게 지금 내 환경에서는 Ngrinder 가 나을지도 모르겠다는 생각이든다. M1 에서 너무 자주꺼진다.. 여하튼 Socket Test 를 하는 Til 겸 방법에 대해 간단히 적어보았다.

'Java' 카테고리의 다른 글

젠킨스 JVM 메모리 설정  (0) 2021.10.20
객체는 무엇일까?  (0) 2021.10.14
Switch 문 반복을 없애기  (0) 2021.10.07
JVM 구조  (0) 2021.10.07
[Spring Boot] Jenkins 로 자동 배포하기  (0) 2021.09.21