본문 바로가기
Infra, Cloud/AWS

[AWS] JMeter를 이용하여 EC2 부하 테스트하기

by J4J 2022. 10. 19.
300x250
반응형

안녕하세요. J4J입니다.

 

이번 포스팅은 JMeter를 이용하여 EC2 부하 테스트하는 방법에 대해 적어보는 시간을 가져보려고 합니다.

 

 

 

들어가기에 앞서...

 

EC2 부하테스트를 하는 것이기 때문에 당연히 사용 가능한 EC2 인스턴스가 하나 이상이 있어야 합니다.

 

인스턴스를 새롭게 만드려고 하시는 분은 다음 글들을 참고 부탁드립니다.

 

 

 

 

또한 브라우저로 서버에 접속했을 때 특정 페이지가 뜨는 것이 필요합니다.

 

저는 간단하게 nginx 초기화면이 나오도록 설정했고, 저와 같이 설정하길 원하시는 분은 다음 글들을 참고 부탁드립니다.

 

 

 

 

JMeter란?

 

JMeter는 Apache에서 만든  웹 애플리케이션 성능 분석을 위한 도구로 서버가 얼마나 트래픽을 견뎌낼 수 있는지에 대한 지표를 제공해주는 부하 테스트를 할 때 사용됩니다.

 

JMeter는 크게 다음의 테스트 용도로 사용될 수 있습니다.

 

  • JDBC 데이터베이스 연결
  • FTP
  • LDAP
  • 웹 서비스
  • JMS
  • HTTP
  • 제네릭 TCP 연결
  • OS 네이티브

 

 

 

이 중 이번 글에서 하려고 하는 것은 브라우저에 접근할 때 얼마나 많은 트래픽을 견딜 수 있는지에 대해 알아볼 것이기 때문에 HTTP를 테스트 해볼 예정입니다.

 

 

 

JMeter 설치 및 설정

 

JMeter는 어디에 설치해도 상관없기에, 기본적으로 많이 사용될 Window에 설치해보도록 하겠습니다.

 

 

 

[ 1. JMeter 설치하기 ]

 

JMeter 공식 홈페이지 다운로드에 접속한 뒤 Binaries에 있는 zip파일을 클릭하여 다운로드해줍니다.

 

zip파일 다운로드

 

 

 

[ 2. 다운로드한 zip 파일 압축해제 ]

 

 

 

[ 3. plugin manager 추가 ]

 

위에 까지만 해도 JMeter를 실행시키는 데는 문제가 없습니다.

 

하지만 사용성을 높이기 위해 부가적인 요소들을 추가해보겠습니다.

 

먼저 plugin manager를 추가해주겠습니다.

 

https://jmeter-plugins.org/get를 클릭하여 jar파일을 다운로드하여줍니다.

 

 

 

jar파일을 다운로드하였으면 위에서 압축해제를 한 JMeter 폴더의 /lib/ext 경로에 다운로드한 jar파일을 넣어줍니다.

 

plugin manager jar 추가

 

 

 

[ 4. basic graph 추가 ]

 

이번엔 https://jmeter-plugins.org/?search=jpgc-graphs-basic를 클릭해줍니다.

 

그러면 다음과 같은 화면이 나오는데 여기서 Version 값을 클릭하여 zip 파일을 다운로드하여줍니다.

 

basic graph zip 다운로드

 

 

 

다운로드한 zip 파일을 풀어주면 jar파일 하나와 또 다른 jar파일이 들어있는 ext폴더를 볼 수 있습니다.

 

여기서 바로 보이는 jar파일은 JMeter 폴더의 /lib 경로에 넣어줍니다.

 

lib에 jar 추가

 

 

 

그리고 ext폴더를 들어가 보면 jar파일이 2개가 있는 이 파일들은 JMeter 폴더의 /lib/ext 경로에 넣어줍니다.

 

ext에 jar 추가

 

 

 

[ 5. JMeter 실행 ]

 

모든 과정이 완료되었다면 JMeter 폴더의 /bin 경로로 가서 jmeter.bat을 실행시켜주면 cmd창과 함께 JMeter가 실행되는 것을 확인할 수 있습니다.

 

JMeter 실행

 

 

반응형

 

 

EC2 부하 테스트

 

JMeter를 실행하면 먼저 다음과 같이 상단의 Options에서 Plugins Manager가 있는지 확인해줍니다.

 

Plugins Manager 확인

 

 

 

보이지 않는다면 위에 있는 plugin manager 추가를 다시 한번 확인해주시길 바랍니다.

 

 

 

또한 Test Plan 우 클릭 → Add → Listener에서 jp@gc와 관련된 것들이 있는지 확인해줍니다.

 

basic graph 확인

 

 

 

보이지 않는다면 위에 있는 basic graph 추가를 다시 한번 확인해주시길 바랍니다.

 

 

 

모든 확인이 완료되었다면 간단하게 부하 테스트를 해보겠습니다.

 

[ 1. basic graph 추가 ]

 

Test Plan 우 클릭 → Add → Listener에서 jp@gc로 되어있는 3개를 모두 추가해줍니다.

 

basic graph 추가

 

 

 

[ 2. Thread Group 추가 ]

 

Test Plan 우 클릭 → Add → Threads (Users)에서 Thread Group을 추가해줍니다.

 

Thread Group 추가

 

 

 

그러면 다음과 같은 화면이 나오는데 여기서 주의 깊게 보셔야 되는 것은 다음과 같습니다.

 

  • Number of Threads (users) → 접속하는 사용자 수
  • Ramp-up period (seconds) → 사용자가 동작을 수행하는 데 걸리는 시간
  • Loop Count → 사용자가 동작을 반복하는 횟수

 

 

 

그리고 저는 이렇게 설정해보겠습니다.

 

Thread Group 설정

 

 

 

이러면 300명의 사용자가 요청하는 것을 최대한 1초 만에 처리하고 이 행동을 50번 반복한다는 의미가 됩니다.

 

 

 

[ 3. HTTP Request 추가 ]

 

Thread Group 우 클릭 → Add → Sampler에서 Http Request를 추가해줍니다.

 

HTTP Request 추가

 

 

 

그러면 다음과 같은 화면이 나오는데, 가장 기본적으로 테스트를 원하는 IP와 Port를 입력해주고 필요하다면 Http Method나 경로도 추가적으로 입력해주시면 됩니다.

 

HTTP Request 설정

 

 

728x90

 

 

[ 4. View Results Tree, Summary Report 추가 ]

 

Thread Group → Add → Listener에서 View Results Tree와 Summary Report를 추가해줍니다.

 

View Results Tree, Summary Report 추가

 

 

 

[ 5. 부하 테스트 실행 ]

 

설정이 모두 완료되었다면 상단에 있는 실행 버튼을 클릭해줍니다.

 

실행 버튼 클릭

 

 

 

버튼을 클릭하면 테스트한 것을 저장할지에 대한 알림 창이 나오는데 자유롭게 선택해주시면 되고, 선택이 완료되면 Thread Group에서 설정한 값에 맞게 동작이 됩니다.

 

 

 

테스트 결과

 

먼저 jp@gc쪽을 보면 시간 별 스레드 동작 개수, 시간 별 응답 시간, 시간 별 트랜잭션 처리 갯수 등을 다음과 같이 확인할 수 있습니다.

 

Active Threads Over Time

 

Response Times Over Time

 

Transactions per Second

 

 

 

또한 View Results Tree를 보면 다음과 같이 요청 별 결과들을 확인할 수 있습니다.

 

View Results Tree

 

 

 

마지막으로 Summary Report를 보면 다음과 같이 테스트를 진행한 모든 sample에 대한 결과를 종합적으로 확인할 수 있습니다.

 

Summary Report

 

 

 

Thread Group에 설정한 케이스를 보면 총 15000건(user 300 x loop 50)의 요청이 있었을 것이고 결과를 확인해보면 11초 동안 어떠한 요청도 문제가 발생되지 않고 정상적으로 처리된 것을 확인할 수 있습니다.

 

현재 서버의 상태로는 이 정도의 트래픽이 넘어왔을 때 문제없이 견뎌낼 수 있을 것이라고 판단할 것 같습니다.

 

 

 

추가로 값을 초기화하여 다른 테스트를 진행해보고 싶다면 상단의 Run에서 Clear, Clear All을 활용하시면 됩니다.

 

Clear

 

 

 

 

 

 

 

 

이상으로 JMeter를 이용하여 EC2 부하 테스트하는 방법에 대해 간단하게 알아보는 시간이었습니다.

 

읽어주셔서 감사합니다.

 

 

 

728x90
반응형

댓글