Skip to content

Apache JMeter 가이드

yeonLog edited this page Oct 10, 2022 · 2 revisions

⭐ 미션

톰캣 설정 중 아래 값을 적절하게 설정하고, 해당 값으로 설정한 이유를 공유

  • threads max
  • max connections
  • accept count

💻 jmeter 설치

$ brew update
$ brew install jmeter

플러그인 추가

option → plugin manager

  • 3Basic Graphs
  • Custom Thread Groups 설치

plugin 관리창이 없는 경우

  1. https://jmeter-plugins.org/get/ 플러그인 다운
  2. /lib/ext 위치에 복사
  3. 재시작

📲 jmeter 테스트 하기

1. jmeter - Thread Group 생성

Test Plan 우클릭 → Threads → Thread Group

  • Number of Threads: 모든 Thread 개수
  • Ramp-Up Period: 모든 Thread가 생성되는데 까지 걸리는 시간
  • Loop Count: 한 Thread당 모두 몇 번의 테스트를 수행하는지 정의

ex: Number of Threads가 180개이고 Ramp-Up Period가 2이면 2초안에 180개의 스레드가 모두 생성된다.

image


2. jmeter - HTTP Request 생성

thread group 우클릭 → Add → Sampler → HTTP Request

image


(+) 헤더값 추가하기

HTTP Request 우클릭 → Add → Config Element → HTTP Header Manager

image


3. jmeter - 결과 그래프 추가

thread group 우클릭 → Add → Listener → 원하는 형태의 결과창 선택

ex: jp@gc - Transactions per Second는 TPS를 그래프 형태로 보여준다

image


4. Server - Tomcat 설정 바꾸기

Tomcat의 아래 설정들을 바꿔 서버를 재시작한다.

  • max-connections= 서버가 요청을 처리할 수 있는 Connection의 수
  • accept-count=추가적인 Connection을 대기
  • threads.max=동시 요청을 처리할 수 있는 Thread의 개수

서버 재시작하는 명령어

$ lsof -i :808
$ kill -9 {PID}
$ java -Duser.timezone=Asia/Seoul -jar -Dspring.profiles.active=dev -Dserver.tomcat.max-
connections=10 -Dserver.tomcat.accept-count=5 -Dserver.tomcat.threads.max=4 pickpick-0.0.1-SNAPSHOT.jar > /dev/null 2>&
1 &

서버에서 실행시켜두면 좋은 명령어

  • top: user cpu, kernel cpu를 확인하고 DB, WAS, WS 중 어느 지점에서 CPU를 많이 사용하고 있는지 점검 (top 확인 방법)
$ top
  • vmstat: CPU, Memory, Swap, Io, System call 등의 지표를 확인 (지표보는법)
$ vmstat 1 #1초마다 지표 확인

5. jmeter - 부하 시작

start 버튼을 통해 부하 테스트를 시작한다.

부하 테스트 시작 버튼을 누르면 우측의 정지 버튼이 활성화된다.


왜 JMeter를 썼을까?

새로운 기술을 도입하며 고민한 포인트는 아래와 같다.

  1. 참고할 자료가 많다.
  2. 러닝 커브가 너무 높지 않으면서도 부하 툴에 대한 학습을 할 수 있다.
  3. 개인 PC에서 테스트해보기 부담스럽지 않다.
  4. 무료로 사용 가능하다.

위 조건을 검토한 결과 ngrinder, jmeter, locust가 후보로 올랐다.

현재 프로젝트 규모 상으로는 소규모 프로젝트에 적합하다는 locust가 베스트 같았지만 학습을 위해 ngrinderjmeter를 사용해보고 싶다는 의견이 있었다. UI가 예쁘지만 다소 무거운 ngrinder보다는 간단 심플해도 봐야할 지표는 다 존재하는 jmeter를 선택하게 되었다.


모니터링 도구를 써야할까?

jmeter의 tps 그래프만으로는 어떤 것을 어떻게 개선해야할지 감이 안잡혔음

→ 모니터링에서 추가적으로 도움되는 정보를 얻을 수 있음

→ 원래 목적에 비해 과정이 너무 복잡해지고 필요성을 크게 느끼지 못해서 쓰지 않기로 함

Clone this wiki locally