최근 회사에서 소켓 서버를 구현하게 되면서, 스트레스 테스트를 할 일이 필요해졌다.
처음에는 Go 언어로 Client 코드를 직접작성했으나, 단순 연결성이나 메세지를 주고 받는 정도에 그쳤고, 더 많은 부가 정보를 알기 위해서는 기존에 좋은 테스트 툴을 사용하는 것을 추천받았다.
두 가지정도의 방안을 생각했는데, 첫번째로는 Naver 가 만든 Ngrinder 이라는 테스트 툴이였다.
이미 유명한 툴이고 많은 이들이 사용하고 있을 툴이라고 생각한다. Groovy 로 Script 를 구성할 수 있는게 매력적이였다.
http://naver.github.io/ngrinder/
기존 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 |