QA

JMeter를 알아보자!

minzihun 2023. 2. 7. 00:35

  Apache JMeter는 부하테스트와 성능 측정을 위해 100% Java로 작성된 오픈 소스 소프트웨어이다. JMeter 홈페이지에 가서 zip파일로 다운 받아서 압축을 푼 다음, bin 폴더 아래 ApacheJMeter.jar 파일을 실행시켜준다. 순수 자바로 작성되었기에 무조건 자바가 설치되어 있어야 한다.

 

 프로그램을 실행시키면, Test Plan이 있는데 이를 통해 웹서버를 테스트하는 계획을 세울 수 있다. 오른쪽 클릭해서 Add → Threads → Thead Group 을 눌러준다.

  * Number of Threads (users): 몇 사람이 동시에 접속하는 지 설정한다.

  * Loop Count: 설정해준 값 만큼 각 유저가 접속한다.

 

설정 후, Add → Sampler → HTTP Request (외부로 접속 할 시)를 선택해준다. 

 

 Protocol이 https면 적어주고, http면 비어두면 된다. IP랑 Port Number도 채워주고, Path에는 이 웹페이지에 어느 주소로 접속할지 파일의 이름을 적으면 된다. 헤드값을 설정해주고 싶으면 밑에 있는 목록을 채워주면 된다. 그 다음 실행버튼을 눌러 테스트 플랜 저장하고 싶으면 저장하고, 테스트를 진행하면 된다. 이 방법이 JMeter를 이용해서 서버에 접속해 부하를 주는 기본적인 방법이다.

 

 한 Thread Group안에서 여러개의 request를 만들 수 있다. 여러 request를 동시에 접속하게 할 수 있다. 이렇게 접속하면 부하가 얼마나 걸리는 지 JMeter 안에서 확인 할 방법이 없다. 해당 하는 범위에 마우스 오른쪽 버튼을 클릭하고 Add → Listener → View Results Tree를 추가해준다. Sampler result에서 각 request에 대한 상세 정보를 볼 수 있다. 시간은 ms로 표현된다.

  * Load time: request를 시작한 시간부터 response가 끝날 때 까지의 시간 일반적으로 performance mesure할 때는 Load

  * time을 참조한다.

  * Latency: request를 시작한 시간부터 response가 시작되기 전 시간까지의 시간

 

View Result Tree만으로는 통찰력을 얻긴 힘들다. 똑같이 Listener에서 Summary Report를 선택하면, 

  * Samples: 몇 번 접속했는지 횟수

  * Min: 가장 빨리 엑세스가 끝난 시간

  * Max: 가장 오래 걸린 엑세스 시간

  * Throughput: 단위 시간당 해당 횟수의 엑세스 수를 나타낸다. 높을 수록 좋은 것이다. 근데 함정은 서버 단에서 에러가 발생하면 복잡한 로직을 생략하기에 Throughput이 높아질 수 밖에 없다.

  * Std. Dev.: 표준편차가 0이면 모두 같은 시간에 처리했다는 소리고, 들쑥날쑥하다면 모두 엑세스 시간이 다르다는 소리다.

 

 근데 또 이것만으로는 추세를 알기 힘들다 그럴때는 그래프를 참고해야한다. 똑같이 Listener에서 Graph Results를 선택하고 Thread Group에서 Loop Count에서 Infinite를 체크해주면, 추세를 시각적으로 알 수 있다.