JMeter
JMeter는 자바기반의 테스트, 성능 테스트 오픈소스이다. Web-application 용도로 설계되었지만, 현재 다양한 테스트 기능을 제공하고 있다,
JMeter는 다음과 같은 테스트를 지원한다.
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
- SOAP / REST Webservices
- FTP
- Database via JDBC
- LDAP
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S), POP3(S) and IMAP(S)
- Native commands or shell scripts
- TCP
- Java Objects
위 기능을 제외하고, 다양한 테스트를 지원하고 있다.
JMeter GUI
JMeter는 보다 편리한 사용성을 위한 GUI를 제공한다.
다운로드 받은 Apache JMeter의 bin의 JMeter를 실행하면 GUI를 볼 수 있다.
window 사용자라면 jmeter.bat를 실행해도 된다.
글쓴이는 Websocket를 테스트 하기 위해 JMeter 플러그인을 설치하였다.
https://jmeter-plugins.org/install/Install/
플러그인을 통해 bSocket Samplers by Peter Doornbosch을 설치하였다.
Setting
Thread Group을 생성하여 테스트 환경을 구성할 수 있다.
- Number of Thread: 쓰레드 갯수, 클라이언트 수
- Ramp-Up Period: 테스트 실행 시간이다. 예를 들어 Number of Thread가 10이고 Ramp-Up Period가 5이면 5초동안 10번의 요청을 보낸다(Ramp-Up Period안의 요청폭은 예측할 수 없다고 한다. 그래도 최대한 공평하게 배분한다고 한다.)
- Loop Count: 클라이언트의 요청 수(한번에 보내는 요청수)
request를 추가하여 원하는 프로토콜(http, websocket)에 해당하는 request를 설정할 수 있다.
Result
result tree, summary report와 같은 listener를 추가하여 결과를 모니터링 할 수 있다.
글쓴이는 트레픽이 발생하였을때, 서버에서 정상적으로 처리가 가능한지 확인하기 위해 나는 50개의 클라이언트가 무한히 요청을 보내는 테스트를 진행하였다.
응답 평균시간이(Averge) 서서히 증가하는 것을 확인할 수 있었다. 또한 실행도중 웹소캣 연결이 끊어져 버리는 현상도 관찰되었다.
'Java > 스프링 부트' 카테고리의 다른 글
[Webflux] Publisher, Subscriber (0) | 2024.06.05 |
---|---|
[Webflux] Mono, Flux.Block() (0) | 2024.06.05 |
[Webflux] Reactor 시작하기 (0) | 2024.03.25 |
[Spring boot] @ConfigurationProperties 에서 "Failed to bind properties" (0) | 2024.03.06 |
[Spring boot] @Transactional readOnly에 대한 고찰 -1 (0) | 2024.02.28 |