본문 바로가기

카테고리 없음

성능테스트 (부하테스트 도구 비교) - jmeter, k6, ngrinder, locust

부하 테스트 도구 후보군: jmeter, k6, ngrinder, locust

후보군 선정이유: jmeter는 내가 사용해보았고 나머지는 주변에서 사용해봤다는 도구들을 대표적으로 비교해봤다. 

위, 아래 표 동일 내용입니다.

구분 jmeter k6 ngrinder locust
개발 언어 Java Go Java Python
사용 방법(스크립트 작성언어)  GUI, CLI(XML로 작성, java로 실행) 모두 지원 모두 지원 주로 CLI(javascript 코딩)  GUI, CIL(Groovy, Jython로 코딩) CLI(python 코딩)
리소스 
& 동시 
접속자 수
각 사용자에 대해 별도의 스레드를 할당하는 스레드 기반 모델이라 스레드 할당에 상당한 리소스 필요 아래 참고 아래 참고 gevent 코루틴을 사용하여 이벤트 및 비동기 접근 방식 기반 모델이라 jmeter보다는 덜 필요하지만 그래도 많이 필요
각 특징 - 20년 이상된 오래된 도구여서 자료가 많다.
- 다양한 프로토콜 지원, 풍부한 사용자 인터페이스, 다양한 테스트 요소, 보고서 및 결과 분석 기능을 가지고 있다.
- 실제와 비슷하게 분산 부하 테스트 가능
- 실시간 모니터링과 스케일링에는 JMeter의 GUI 모드에서는 제한이 있으나, CLI 모드와 플러그인을 통해 일부 스케일링 기능을 확장할 수 있다.
- 간단하고 직관적인 API를 통해 스크립트 작성을 지원
- 테스트 실행 중에 실시간 모니터링을 제공
- 분산 부하 테스트는 k6 Cloud 서비스를 통해 제공
- 다양한 프로토콜 지원, 분산 테스트 실행, 실시간 모니터링 등을 제공
- 한국어 지원
- 실시간 모니터링 및 대시보드를 통한 부하 테스트 결과 및 성능 지표의 실시간 확인
- 실제와 비슷하게 분산 부하 테스트 가능
프로토콜 지원 모두 HTTP 지원

 

일단 내 로컬에다 설치할 것이기 때문에 가볍고 빠른 것을 선택하고 싶었다.

1. jvm 위에서 동작하면 무겁고 느리다고 판단했다. (jmeter, ngrinder 아웃.. k6, locust만 남음)

2. locust가 github star 수가 0.1k정도 더 많고 그만큼 사람들에게 인기가 많다. (조금 미미한 차이같아서 자료를 더 찾아봤다.)

사진 출처 :  https://k6.io/blog/comparing-best-open-source-load-testing-tools/#vu

3. 위 사진을 보면 RPS(Request Per Second)는 k6가 훨씬 높다. 하지만 대부분의 경우 초당 2,000건의 요청을 생성할 수 있다면 충분하기에 분산 Locust도 이용가능하다.

4. 하지만 메모리 사용량이 k6가 현저히 낮으며 RPS를 살펴보면 요청은 훨씬 많은 수를 보낼 수 있다.

사진 출처 :  https://k6.io/blog/comparing-best-open-source-load-testing-tools/#vu

5. 결정적으로 100VU(가상 사용자)에서 locust는 측정오류가 매우 높다.(응답시간이 매우 느리게 돌아온다.)

 

 

GUI를 사용하면 오버헤드가 생길 수 있어 실제 환경과 비슷하게 테스트하기 어렵다. 따라서 CLI를 사용할 생각이었고 사실 스크립트를 짜기 위해 어떤 언어든 금방 배울 자신이 있었다..! 보통 자신의 주력 언어를 사용하는 것 같다.

locust도 나쁘지 않지만 경량에 최적화되어있으며 빠른 k6를 사용하기로 결정했다. 

 

 

 

 

참고 출처 :

https://k6.io/blog/comparing-best-open-source-load-testing-tools/#vu 

 

Open source load testing tool review 2020

Extensive review and benchmarking of the most popular open source load testing tools 2020

k6.io

https://velog.io/@yongtae923/k6-vs-JMeter#k6-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8-%EC%84%B1%EB%8A%A5-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8F%84%EA%B5%AC

 

k6 vs JMeter, 어느 성능 테스트 도구를 써야 할까?

k6 vs JMeter안녕하세요. 유니크굿컴퍼니의 백엔드 개발자 용태입니다. 지난번에 제가 작성했던 <온보딩 과정을 돌아보다> 글에 이어서, 이번에는 <성능 테스트 도구 비교>를 주제로 만나 뵙게 되어

velog.io

https://creampuffy.tistory.com/209

 

Apache JMeter를 이용한 부하 테스트 및 리포트 생성

서버의 성능을 최적화하기 위해선 어떤 작업이 필요할까요? 어떤 지표를 기준으로 성능을 측정할 것인지, 정의된 지표에 영향을 미치는 변수에는 무엇이 있는지, 해당 변수들의 변화가 성능에

creampuffy.tistory.com