Jmeter를 활용한 서버 부하 테스트
정보

Jmeter를 활용한 서버 부하 테스트

반응형

Jmeter는 Apache에서 재공하는 웹사이트 성능 측정을 할 수 있는 오픈소스 라이브러리다.

[다운로드 링크]

 

Apache JMeter - Download Apache JMeter

Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava

jmeter.apache.org

만약 자바가 설치되어 있지 않다면, JDK 설치도 해줘야 한다.

Jmeter 실행은 다운로드 받은 폴더 압축을 풀고, bin 안에서 cmd창을 열어 jmeter.bat을 실행하면 된다.

Jemeter로 사용할 수 있는 여러 플러그인들이 있으며, 이는 ext 폴더 안에 jar 파일을 추가해주면된다.

- Jmeter Plugins Manager : [링크]

- Transactions Per Second Plugin : [링크]

 

JMeter Plugins :: JMeter-Plugins.org

 

jmeter-plugins.org

 

부하 테스트 진행

1. Use Defined Variables 설정

Test Plan 오른쪽 마우스 클릭 → Add → Config Element → User Defined Variables

아래 'Add'를 통해 변수들을 등록할 수 있다.

웹사이트 접속에 필요한 ip, port를 입력하고, 추후 사용할 접속 유저 수, 실행 시간, 인코딩, 반복 횟수 등을 등록해둔다.

(server_ip와 server_port Value에는 본인이 테스트 할 실제 ip와 port를 직접 입력해주면 된다)

 

2. Thread Group 설정

우리가 실제로 테스트 해 볼 스레드를 만드는 곳이다.

Test Plan 오른쪽 마우스 클릭 → Add → Listener → jp@gc - Transactions per Second

아까 등록해 둔 접속 유저 수, 실행 시간, 반복 횟수 값을 '${}'로 적용시킬 수 있다.

해당 스레드를 실행 시킬 때 유저와 시간 및 횟수를 설정해두는 곳이다.

 

3. Http Request 설정

스레드 상에서 Http Request를 테스트 해보기 위함이다.

Thread Group 오른쪽 마우스 클릭 → Add → Sampler → HTTP Request

Basic에는 기본 정보를 입력한다. 프로토콜 정보와 유저 정의로 입력한 ip와 port 번호를 불러와 저장한다.

이제 HTTP Request(GET, POST, PUT, DELETE 등)과 함께 내가 확인하고 싶은 Path와 필요한 Parameters를 채워준다.

 

Advanced에서는 Implementation을 HttpClient4로 맞춰주자

 

Transaction Per Second 실행

왼쪽 Test Plan 탭에서 'jp@gc'를 누르고, 위에 녹색 재생 표시를 누르면 부하 테스트가 진행된다.

해당 요청에 대해 Fail, Success 여부와 함께 요청 시 걸리는 시간 정보 등이 차트를 통해 제공된다. 

 

아래 결과는, 회원 정보를 조회했을 때 걸리는 부하를 확인해본 것이다.

- 0~5초 : 10명의 유저가 동시에 5번 반복하여 5초 간 회원 정보 확인

- 44~54초 : 100명의 유저가 동시에 5번 반복하여 10초 간 회원 정보 확인 

확실히 많은 유저가 접속을 시도할 때 더 부하가 많이 걸리는 것을 알 수 있다.

현재 테스트에서는 회원 정보를 알기 위해서는 Access_Token 정보를 Head에 담아서 확인하기 때문에 Header를 추가로 설정해줘야 했다.

이는 Http Request에서 Add를 통해 HTTP Header Manager를 만들 수 있으며, 필요한 값들을 양식에 맞춰 넣어주면 된다.

 

현재 테스트로는 하나의 기능으로만 진행했지만, 회원가입, 로그인, 정보 조회 등 여러 요청을 나누어 생성해보고 성능을 체크해 볼 수 있으며, 어떤 기능에서 필요 이상의 부하가 걸리고 있는지도 서비스를 운영하기 전에 확인해볼 수 있을 것이다.

기존에 진행하는 프로젝트 내에서 단위 테스트, 통합 테스트와 함께 서버의 부하가 어느정도 유저를 커버할 수 있을 지 고민하는 습관을 가지는 것도 중요할 것 같다.

 

반응형