JMeter 를 사용하여 개발한 서비스의 스트레스 테스트를 할 수 있도록, 설치부터 설정까지 내용을 정리.
로컬 PC에서 배달포스 서버 서비스의 스트레스 테스트를 진행한 내용을 기준으로 작성.
- 사이트
- 메인 사이트 : http://jmeter.apache.org
- 플러그인 매니저 사이트 : https://jmeter-plugins.org/install/Install/
- 다운로드 사이트 : jmeter.apache.org/download_jmeter.cgi
- 참고 사이트 : https://huistorage.tistory.com/84
https://soul0.tistory.com/279
https://kamang-it.tistory.com/entry/JMeterlistener-활용해서-데이터-시각화-데이터-결과-리포트-보기
https://victorydntmd.tistory.com/267
https://www.sten.or.kr/club/club_main.php?cmd=board&cb_id=cb_Jmeter&page=11&sfl=&stx=&sop=&sca=&wr_id=14
- 설치 / 실행
- 사전 확인 사항 : Java 1.8 버전 이상 설치 필요
- 프로그램 다운로드 및 설치
- 다운로드 사이트의 Binaries에서 Zip 타입의 최신 버전을 다운로드 후, 원하는 곳에 압축 해제.
파일명 : apache-jmeter-5.2.zip - 플러그인 매니저 다운로드 : jmeter-plugins-manager-1.3.jar 를 다운로드 받아, JMeter설치폴더/lib/ext 폴더에 복사.
- 설치 확인 방법 : JMeter 를 실행한 후, 메뉴의 Options → PlugIns Manager 가 보이면 설치 완료된 것임.
- 다운로드 사이트의 Binaries에서 Zip 타입의 최신 버전을 다운로드 후, 원하는 곳에 압축 해제.
- 프로그램 실행
- 압축 해제한 폴더의 bin 폴더 ( 예 - D:/apache-jmeter-5.2/bin ) 안에 있는 jmeter.bat 파일을 실행
-
- 실행하면 cmd창과 JMeter UI 가 보임. cmd창 종료시 프로그램도 같이 종료됨.
- 설정
- JMeter 기본 개념 및 동작 방식
- 기본 개념
- Thread Group : 테스트 할 내용들의 묶음. 여러 개의 Sampler 와 Listener 로 구성될 수 있음.
- Sampler : 테스트할 요청 내용. 사용자의 행동을 대행
- Listener : 요청에 대한 응답을 받아 데이터/그래프/리포트 등 처리 결과 표시
- 동작방식
- 기본 개념
- JMeter 기본 개념 및 동작 방식
-
- 새로운 테스트 플랜 생성 (File -> New)
-
- Thread Group 생성
-
- Thread Group 설정
-
-
- 성능에 가장 중요한 부분
- 여러 개 생성해서 서비스 분야별로 정리하거나 홈페이지별로 정리해서 사용.
- Action to be taken after a Sampler error
- 실행 중에 오류가 발생할 경우 처리 방법 선택. 기본값 사용.
- Thread Properties : 루핑 방법
- Number of Threads (users) : 한 번에 생성할 스레드 수, 즉 동시 접속자 수. 이 값이 커질수록 서버에 대한 부하도 커짐.
- Ramp-up period (seconds) : 한 번에 생성한 스레드의 실행을 완료 할 시간. 1초로 설정하면 users에 설정한 스레드를 동시에 생성.
- Loop Count : 위에 설정한 users 가 반복할 횟수
- 예 ) users : 100, seconds : 1, Count : 10 로 설정한 경우. 1초에 100개의 스레드를 실행하고, 그 횟수를 10회 반복한다. 즉, 10초 안에 1,000개의 스레드가 수행됨.
- 총 스레드 수 : users * seconds * count
- 총 수행 시간 : seconds * count
- Sampler 추가
-
- HTTP Request
- 웹 요청에 대한 정의
- Web Server 부분에는 서버 접속 정보를 적는다.
- Protocol : 통신 프로토콜을 입력. 예) http 또는 https
- Server Name or IP : 서버 접속 정보를 입력. IP 를 넣거나, 도메인 정보를 입력. http 나 https 는 제외하고 입력.
- Port Number : 서비스 포트를 입력. 예) 80
- HTTP Request 부분
- Method : 요청 방법을 선택. get, post 등
- Path : 요청할 서비스의 IP 정보를 제외한 전체 경로. 예) http://127.0.0.1:8080/insert/insertData.jsp 인 경우 /insert/insertData.jsp 만 입력
- Parameter 탭 : 파라미터로 넘겨 줄 값을 정의. 하단의 Add 버튼을 눌러서 추가 후 값을 입력.
- Body Data 탭 : Post 인 경우, 보낼 데이터를 입력. 예) JSON 데이터
- File Upload 탭 : 파일을 전송할 때 사용. 직접 입력하거나, 파일을 찾아서 입력할 수 있다.
- Listener 추가
- Listener : 테스트 결과를 표나 그래프로 표시
- View Results Tree / Summary Report / Graph Results 등을 많이 사용
- 아래와 같이 추가하려고 하는 Thread Group을 선택한 후, Listener 를 선택하여 추가.
- Listener 를 추가한 후, 상단 메뉴바의 초록색 삼각형 버튼을 누르면, Thread Group 에 설정한 내용으로 HTTP Request 를 실행한다.
- 결과를 지우고 싶다면, 상단 메뉴바의 빗자루1개(현재 Listener) 또는 빗자루2개(전체 Listener) 그림의 버튼을 클릭.
-
- View Result Tree
- 요청 결과 데이터를 표시
- Sampler result 탭 : HTTP Request 에서 요청했던 내용에 대한 결과
- Request 탭 : 요청한 내용 표시
- Respose Data 탭 : 결과 데이터 표시
- 테스트 중 오류가 발생하는 경우, 오류처리된 요청이 붉은 색으로 표시된다.
- 만약 Reponse data가 빈화면으로 나오면 ( JMeter response data empty )jmeter.save.saveservice.response_data = true
- jmeter.save.saveservice.samplerData = true
- jmeter.porperties 파일을 에디터로 켜서 아래부분이 false로 되있다면 true로 변경해주세요.
- 인터넷으로는 접속이 되는데 JMater으로는 404에러가 발생한다면JMeter에서는 The Group 하위에 add > Config Element > HTTP Header Manager 추가하신후 해당하는 Header를 넣어주시고 테스트해보시면 될수도있습니다.
- 해당 url로 접속해서 크롬 개발자모드로 header부분을 확인해주시고
- View Result Tree
-
- Summary Report
- 요약 리포트
- Label : HTTP Request 의 NAME 속성이 표시됨.
- #Samples : 요청한 횟수
- Average : 평균 응답시간 (ms)
- Miin : 최소 응답시간 (ms)
- Max : 최대 응답시간 (ms)
- Error : 에러율
- Throughput : 초당 처리 가능한 요청 횟수
- 요약 리포트
- Summary Report
-
- Graph Result
- 결과 데이터를 그래프 형식으로 표시
- Graph Result
- JMeter는 그 초기 목적과 달리 다양한 테스트를 위해 확장되고 있으므로, 여러 목적으로 사용 가능. JDBC, Java Request, JUnit, FTP 등
- JavaRequest 테스트 : 순수 자바 어플리케이션을 만들고 있는데, 별도의 테스트 툴이 없어서 힘든 경우
- JUnit 테스트 : 어플리케이션 테스트를 위해 만든 JUnit Test Case의 부하 테스트를 원하는 경우
- FTP 테스트: FTP 서버를 구축했는데, 얼마나 접속하였을 때 다운되는지 알고 싶은 경우.
- 더 자세한 사항은 JMeter 사이트의 Documentation 이나 구글링을 통해 확인해 주세요. ^^
'프로그래밍 > JAVA' 카테고리의 다른 글
[SpringBoot] Gradle에서 bootjar 실행시 Entry META-INF/MANIFEST.MF is a duplicate but no duplicate handling strategy has been set 오류 해결 방법 (0) | 2024.01.10 |
---|---|
Spring Quartz 표현식 정리 (1) | 2023.12.15 |
[JAVA] JDBC로 MSSQL 접속시 '드라이버가 ssl 암호화를 사용하여 sql sever로 보안 연결을 설정할 수 없습니다' 오류 발생시 해결방법 (0) | 2023.07.05 |
시퀀스 다이어그램 / UML 작성 문법 (0) | 2023.04.19 |
[JAVA] 개발 툴에서 javax.servlet does not exist 오류가 발생하는 경우 (0) | 2023.02.28 |
댓글