부하테스트는 성능 테스트와 성능 튜닝이 어느 정도 완성되면 해당 소프트웨어 혹은 서비스를 대표할 수 있는 기능을 선정하여 해당 하드웨어 및 네트워크 환경에서 얼마나 많은 사용자가 동시에 사용할 수 있는지 테스트하는 것을 말한다.
서비스가 로직적으로 테스트가 잘 진행되어져도, 실제 상황에 대해서 다량의 인원이 여러 요청을 하는 경우에 대한 부하의 한계를 파악하기가 힘들다.
실제로 그러한 장애 상황이 오는 것을 대비하기 위해서라도 서비스의 부하테스트를 해보는 작업이 필요하다.
JMeter로 부하테스트를 진행해보자!
https://jmeter.apache.org/download_jmeter.cgi 에서 zip 파일을 받아 압축을 풀어보자.
압축을 풀고 터미널
에서 apache-jmeter
디렉토리의 bin
으로 들어가서 $ ./jmeter
명령어를 입력한다.
입력하면 JMeter가 실행된다.
Number of Threads
: 쓰레드 개수, 요청을 발생시킬 클라이언트 수.
Ramp-Up Period
: 해당 쓰레드 그룹의 진행 시간. 전체 쓰레드가 전부 실행되는 데까지 걸리는 시간.
Loop Count
: 해당 쓰레드 그룹의 반복 횟수.
Thread Group에서 마우스 우클릭 하고 Add -> Sampler -> HTTP Request
HTTP Request에 메소드와 호출하려는 uri를 입력하고 실행하면 해당 uri에 대한 부하 테스트가 진행된다.
결과를 상세히 보고 검색할 수 있다.
결과를 요약해서 보여준다.
Label
: 우리가 사용했던 request의 이름을 기준으로 모은다. 따라서 다르게 집계하고 싶다면 이름을 반드시 다르게 한다.Samples
: requset 수Average
: Sample Time의 평균Min
: Sample Time의 최소Max
: Sample Time의 최대Std. Dev.
: Sample Time의 표준편차Error %
: 에러율Throughput
: 시간당 처리량Received KB/sec
: 시간당(sec) 받은 데이터(KB)Sent KB/sec
: 시간당(sec) 보낸 데이터(KB)Avg. Bytes
: 평균 바이트응답에 걸린 시간을 그래프로 보여준다.
참고
https://luxtar.tistory.com/8
https://hayden-archive.tistory.com/398
https://kamang-it.tistory.com/entry/JMeterlistener-%ED%99%9C%EC%9A%A9%ED%95%B4%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B2%B0%EA%B3%BC-%EB%A6%AC%ED%8F%AC%ED%8A%B8-%EB%B3%B4%EA%B8%B0