안녕하세요. 비버입니다. :D
API 성능 테스트를 위한 툴 JMeter 를 리눅스 환경에서 non GUI 모드로 사용하는 방법에 대해 정리해두려고 합니다.
저는 최근 회사의 새로운 서비스에 사용될 '문서 카테고리를 분류 모델'을 개발하였습니다. BentoML 을 활용하여 API 개발 & 도커라이징까지 완료했고, 연구용 서버에서 curl GET 요청으로 데이터 송수신 테스트까지 마친 상황이었죠. 저희 팀은 매주 한 번씩 대표님과 개발 실장님이 참석하시는 회의에서 지난 주간 동안 진행한 업무 내용을 보고드리는데요. 개발 실장님께서 제가 개발한 문서 분류 API의 성능 테스트가 필요할 것 같다고 하시며 JMeter 를 말씀하셨습니다. (API 성능 테스트를 위한 툴이 여럿 있는 것을 압니다. 하지만 이러한 이유로 저는 이번에 JMeter 를 사용하게 되었습니다. 😉)
사용해본 적이 없었던 터라 구글링을 해보았는데, 윈도우 환경에서 GUI 모드로 사용하는 방법에 대해서는 설명해둔 글이 많았지만 non GUI 모드로 사용하는 방법에 대해 설명해둔 글은 많지 않았습니다. 때문에 우분투 OS 가 설치된 회사 서버를 사용해야 하는 저는 어쩔 수 없이 약간의 삽질을 거칠 수밖에 없었는데요. 다행히 어렵지 않게 해결하였지만, 혹 저와 같은 상황을 겪을 분들을 위해 내용을 정리합니다.
0. 시작하기 전에
JMeter 를 non GUI 모드로 사용하더라도 테스트 실행에 필요한 jmx 파일은 JMeter GUI 창을 활용해 생성하는 것이 편리합니다. JMeter GUI 모드 사용 방법은 구글링을 하면 설명글이 많이 나오니, 원하는 글을 참고하셔서 JMeter GUI 실행 방법을 확인해주세요.
1. JMeter 설치하기
위 링크의 Download Releases 에서 Binaries 를 다운로드 받습니다.
- OS 종류에 따라 필요한 Binaries 를 선택해 다운 받으면 됩니다.
- Ubuntu 환경인 저의 경우는 .tgz 파일을 다운 받았습니다.
- wget 을 활용하세요. 편리합니다.
cd 다운로드를 원하는 디렉토리 경로
# 다운로드
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
# 압축 풀기
tar -xvz apache-jmeter-5.4.3.tgz
2. jmx 파일 만들기
0. 시작하기 전에에서 언급했던 것처럼 jmx 파일을 생성하는 것은 JMeter GUI 창을 활용하는 것이 편리합니다. 윈도우 OS가 설치되어 있는 여분의 노트북 등을 활용하세요. (저는 윈도우 환경의 사무실 PC가 한 대 있었기 때문에 이를 활용했습니다.)
2-1. jmeter.bat 파일을 실행하여 JMeter GUI 창 열기
2-2. Thread Group 추가
좌측 상단 TestPlan 우클릭 > Add > Threads (Users) > Thread Group
Thread Group 이란?
- JMeter 에서 Thread 란 곧 사용자(User)라고 생각하면 됩니다.
- 따라서 Thread Group 이란, 우리가 API 를 테스트하기 위해 가상으로 생성할 '사용자 그룹' 을 뜻합니다.
Thread Group 설정 세팅
- Number of Threads (users) : 몇 명의 동시 사용자를 설정할 것인지
- Ramp-up period (seconds) : 몇 초에 한 번씩 사용자들이 요청을 보내도록 할 것인지
- Loop Count : 사용자들이 요청을 몇 번 반복하여 보내도록 할 것인지
2-3. HTTP Request 추가
어떤 API 의, 어떤 주소에, 어떻게 요청을 날릴 것인지 설정하는 곳입니다.
Thread Group 우클릭 > Add > Sampler > HTTP Request
HTTP Request 설정 세팅
- Protocol : http (또는 https)
- Server Name or IP : 서버 도메인명 또는 IP 주소
- Port Number : 포트 번호
- Method : Parameter 를 받아오는 방식 (Default 는 Get)
- Path : 페이지의 주소 (ex. /predict)
- Body Data : 전송할 입력 데이터
2-4. HTTP Header Manager 추가
HTTP Request 우클릭 > Add > Config Element > HTTP Header Manager
아래 이미지와 같이 Content-Type, Content-Encoding 등 HTTP 요청 헤더 정보를 입력하세요. (아래 부분에 Add 버튼이 있습니다.)
2-5. jmx 파일로 저장하기
File > Save Test Plan as
저장한 jmx 파일은 리눅스 환경 PC 로 옮겨주세요.
3. 리눅스 환경에서 JMeter 실행
# Jmeter 실행 파일이 있는 경로로 이동
cd ~/apache-jmeter-5.4.3/bin
# jmeter 실행
./jmeter -n -t <파일명>.jmx -l <로그파일명>.log
# 사용예시
./jmeter -n -t my_test.jmx -l my_test_result.log
옵션 설명
- -n : non GUI 모드
- -t : 우리가 생성한 jmx 파일 경로
- -l : 테스트 결과를 기록할 로그 파일 경로
테스트가 완료된 후 log 파일을 확인하면 테스트의 결과를 확인할 수 있습니다.
축하합니다. 짝짝짝! 👏👏👏
오늘도 도움이 되셨다면 아래 공감 버튼을 꾹! 부탁드립니다. 😊
제 기분이 좋아지니까요.
감사합니다!
'TIL > 기타' 카테고리의 다른 글
[ETL] Airflow 와 Jenkins 비교 - 무엇을 사용할까? (0) | 2022.04.02 |
---|---|
[MacOS] default 쉘 zsh 에서 bash 로 변경하기 (0) | 2022.02.26 |