부하테스트 도구 사용법
JMeter를 처음 사용해보면서 사용법 자체에 대한 검색도 많이 하게 되었습니다. JMeter 공식문서가 있으나 예시가 자세하지 않은 부분이 있어 방법을 찾고 적용하고 실행해보는데 시간이 꽤 걸렸습니다.
검색, 적용에 시간이 많이 걸렸던 부분 위주로 JMeter 사용법을 소개하려고 합니다.
JSON 형식의 POST 메서드 API를 테스트할 때, 각 요청마다 다른 requestBody를 설정하는 방법에 초점을 맞추어 JMeter 사용법을 작성했습니다.
목차
- 부하테스트 공통 개념
- JMeter GET 요청
- JMeter POST 요청(json type)
- JMeter CLI모드로 서버에서 실행
- JMeter 결과 확인 (Listener)
부하테스트 공통 개념
시나리오, 클라이언트 동시 가동수, 시나리오 실행 횟수, 모든 클라이언트 기동하기까지의 시간은 부하테스트 도구의 공통적인 개념이다. 해당 속성을 어떻게 설정하느냐는 부하테스트 도구에 따라 다른데 JMeter의 경우 GUI모드로 간편하게 설정할 수 있다.
JMeter GET 요청
- Query parameter 값을 아래 처럼 지정
- 각 요청마다 query parameter 값이 다를 때, Files upload로 csv 파일로 가능
JMeter POST 요청(json type)
- 티켓발행은 예매 후 진행 되는 프로세스로 사용자의 티켓은 각각 다른 데이터이기 때문에 예매 더미 데이터 생성이 필요하다.
- 더미로 생성한 예매 데이터를 티켓 발행 API에서 POST 요청 requestBody로 사용하도록 json형태의 데이터를 행으로 가진 csv를 생성했다.
{"productSeq":1234,"reserveSeq":12345}
{"productSeq":1234,"reserveSeq":12346}
…. - http request에 아래 그림의 BodyData 탭에 예약어 ${json} 를 적어준다.
[JMeter POST requestBody 설정] - http request 하위에 configElement>HTTP Header Manager 를 add한다.
header에 설정할 값을 적어줄 수 있는 항목으로, Content-Type을 application/json을 작성해주었다. - thread group에 http request와 동일한 레벨로 CSV Data Set Config를 add한다.
3번에서 requestBody로 ${json}을 사용한 부분에 실제 데이터를 넣어주는 역할이다. Filename은 brower에서 선택하면 풀 경로까지 다 나오는 데 그렇게 설정하면 된다.
JMeter CLI모드로 서버에서 실행
- PC에서 GUI모드로 JMeter 시나리오 작성
- jmx파일을 실제 구동할 서버에 업로드해서 부하테스트 진행
- 서버에서 부하테스트 진행할 때는 cli모드로 진행
./jmeter -n -t read_test.jmx -l /home/jmeter/report/report_read_test.jtl -e -o /home/jmeter/report
위 단계에 설정했던 것은 보다시피 GUI 모드였다. JMeter를 설정하고 간단하게 시나리오가 잘 작동되는지 오류는 없는지 확인하는 것은 PC에서 하는 것이 편리하다.
본격적으로 서버 성능 확인을 위한 테스트를 진행할 때는 같은 네트워크 대역에 있는 서버에서 진행해 불필요한 network latency를 없애, 성능을 측정하고자 하는 서버에만 집중해야 한다.
GUI모드로 JMeter에 시나리오를 작성한 후에 저장하면 xml형태의 jmx 파일이 생성되는데, 해당 jmx파일을 서버에 업로드하여 사용하는 것이 xml을 처음 부터 설정하는 것보다 훨씬 편리하다.
주의할 점은 별도 csv같은 파일을 사용할 경우 경로를 서버에 맞게 변경해주어야 한다.
위 명령어로 jmeter를 실행하면 .jtl 로 결과값을 얻을 수 있다.
jtl 파일을 다운로드 해서 GUI모드의 Listener에 가져와서 결과를 확인할 수도 있다.
JMeter 결과 확인 (Listener)
결과 확인은 Thread Group과 같은 레벨로 Listener를 add 하여 확인할 수 있다. 대표적으로 확인한 것은 3가지 이다.
- View Results
- Summary Report
- Transactions per Second
결과 확인하는 listener는 각각의 특징이 있다. 저의 경우 본격적인 부하테스트 전 설정할 때는 결과값을 View Results, Transactions per Second로 자세한 값을 확인하거나 그래프로 전체 추이를 지켜 보았다. 그리고 어느 정도 부하테스트에 익숙해진 단계에서는 summary report을 주로 확인했다.
View Results
- 각 http 요청, 응답 값을 상세히 확인 가능
- 에러 난 항목만 확인도 가능
- 그러나! 해당 listener가 부하테스트 도구 자체에 부하를 줄 수 있다.
- 테스트 준비에만 사용
Summary Report
- Error 율(%) 확인
- Throughput(TPS) 확인
Transactions per Second
전체 추이를 그래프로 한 눈에 볼 수 있어 편리하다.
추가로 "웹 서버 성능테스트" 에 대해 작성한 글도 확인해보세요.
웹 서버 성능테스트 - 병목 해결을 위한 단계별 테스트
회사 프로젝트 오픈 전 얼마만큼의 사용자를 처리할 수 있는지 확인하고 사업 목표 TPS를 달성하기 위해 성능테스트를 진행하였습니다. 성능테스트를 진행하기 전 시나리오를 작성하고 API를 최
devstep.tistory.com
댓글