JMeter는 아파치 소프트웨어 재단(Apache Software Foundation)에서 개발한 오픈 소스 성능 테스트 도구입니다.
주로 웹 애플리케이션의 성능을 측정하고 부하 테스트를 수행하는 데 사용되지만, 다양한 프로토콜을 지원하여 여러 종류의 테스트에 활용될 수 있습니다.
프로젝트 막판에 성능테스트 및 부하테스트의 결과보고서로 Jmeter를 많이들 사용하는데요.
Jmeter의 설정 및 테스트 시나리오 작성에 대해서 간단하게 알아보겠습니다.
1. 부하테스트/성능테스트의 목적
부하테스트는 시스템이 실제 운영 환경에서 예상되는 사용자의 부하를 견딜 수 있는지 평가하는 중요한 방법입니다.
JMeter를 사용하면 다양한 부하 조건에서 시스템의 성능을 측정할 수 있습니다.
- 응답시간 측정 : 요청에 대한 응답 시간이 얼마나 빠른지 측정
- 처리량 측정 : 초당 초리할 수 있는 요청 수를 측정
- 에러율 : 요청 처리 중 발생하는 에러 비율을 측정
2. JMeter 설치
먼저 JMeter를 사용하기 위해선 설치를 해야겠죠? 설치는 상당히 간단합니다. 아파치 소프트웨어 재단의 프로그램이라 그런지 Tomcat처럼 설치와 사용이 간단합니다.
https://jmeter.apache.org/download_jmeter.cgi
JMeter 홈페이지의 다운로드 페이지에서 다운로드 받고, 압축을 풀면 끝입니다.
cd /apache-jmeter-5.6/bin
sh jmeter
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
Warning: the fonts "Times" and "Times" are not available for the Java logical font "Serif", which may have unexpected appearance or behavior. Re-enable the "Times" font to remove this warning.
3. JMeter Plugin 설치
기본 JMeter를 사용해도 되지만, 괜찮은 플러그인이 있어서 하나 추천해 드립니다.
https://jmeter-plugins.org/?search=jpgc-graphs-basic
'Basic Graphs' 플러그인은 Apache JMeter의 성능 테스트 결과를 시각적으로 표현할 수 있습니다.
이 플러그인을 같이 설치하면 JMeter 성능/부하 테스트 중 수집된 데이터를 다양한 그래프로 표현하여, 테스트 결과를 쉽게 이해하고 분석할 수 있도록 도와줄 수 있습니다.
플러그인 파일을 다운로드 받아서 압축을 풀면 lib 폴더가 보이실 겁니다.
해당 lib 안의 ext 폴더와 jar들을 설치된 JMeter > lib 폴더 안에 넣어주시면 됩니다.
4. 테스트 시나리오 작성
JMeter 설치&실행이 완료 됐다면 이제 테스트 시나리오를 작성하고, 테스트 시나리오대로 수행해 보면서 부하테스트 및 성능테스트를 진행하면 됩니다. 부하테스트 및 성능테스트는 운영서버에 직접 실행하는 것이 가장 좋지만, 이미 오픈한 운영서버에 테스트하기에는 위험부담이 있습니다.
그러므로 운영서버 환경과 동일한 개발서버에서 진행하는 것이 좋고, 오픈 전이라면 운영서버가 제일 좋겠죠?
그럼 성능/부하 테스트의 간단한 시나리오를 작성해 보겠습니다.
※ 기준
- 응답시간 : 1초 이내 ( 메인 페이지 및 주요 페이지 ) / 요청 한계 3초 이하
- 처리량 : 200 tps
- 동시접속 : 500명(최소)
- 오류율 : 1% 이내
※ 테스트 시나리오
- 부하 테스트
- 동접 500명, 2시간 동안 지속 부하, 응답시간 및 처리량 측정
- 1초 이내 응답, 200tps
- 스트레스 테스트
- 10분 동안 동시접속자 1500명 점진적으로 증가
- 3초 내 응답, 오류율 1% 이내
- 스파이크 테스트
- 3초 동안 동시접속자 1000명 즉시 증가
- 3초 내 응답, 오류율 1% 이내
저는 이렇게 테스트 시나리오를 작성했습니다. 테스트 시나리오는 서비스 환경에 맞춰서 조절해 주시면 됩니다.
5. JMeter 성능테스트/부하테스트 기본 설정
테스트 시나리오까지 완성했으니 이제 JMeter를 이용해서 부하테스트를 실행해 봐야겠지요?
이전에 플러그인을 설치했으니, JMeter를 재시작해주시고 이제 세팅을 해보겠습니다.
'Test Plan' 메뉴에서 좌측 마우스 클릭하여 Add > Threads(Users) > Thread Group을 클릭하여 메뉴를 추가해 줍니다.
JMeter에서 'Thread Group' 성능 테스트 계획의 핵심 요소 중 하나라고 할 수 있습니다.
가상 사용자의 동작을 정의하는 데 사용합니다. Thread Group 메뉴를 이용해서 테스트할 사용자 수, 요청 빈도, 지속 시간 등을 설정할 수 있습니다.
위에서부터 하나씩 항목을 살펴보겠습니다.
'Action to be taken after a Sampler error' 샘플에서 에러가 발생했을 때의 동작을 설정할 수 있습니다.
- Continue : 에러가 발생해도 테스트를 계속 진행
- Start Next Thread Loop : 현재 스레드의 루프를 종료하고 다음 루프를 시작
- Stop Thread : 에러가 발생한 스레드만 종료
- Stop Test : 전체 테스트를 종료
- Stop Test Now : 현재 실행 중인 모든 샘플러를 강제로 중지하고 테스트를 즉시 종료
'Thread Properties'
Thread Group의 가장 기본적인 설정으로, 테스트에 참여할 가상 사용자(스레드)의 수, Ramp-up기간, 반복 횟수등을 설정할 수 있습니다.
- Number of Threads(users) : 가상 사용자의 수를 설정/각 스레드는 독립적으로 행동하는 가상의 사용자 하나를 의미
- Ramp-Up Period(seconds) : 모든 스레드를 시작하는 데 걸리는 시간을 설정/ 예를 들어, 100명의 스레드를 10초의 램프업 기간에 걸쳐 시작하면, 매 초마다 10명의 스레드(사용자)가 시작
- Loop Count : 각 스레드가 실행할 요청 시퀀스를 반복할 횟수를 설정/ 특정 횟수만큼 반복을 원하면 수치를 입력하고, 무한 반복을 원하면 'Forever' 옵션을 선택
테스트 시나리오에서 작성한 '부하테스트' 시나리오를 작성해 보면 아래와 같다.
그다음으로 성능측정을 할 서버 정보를 입력해 봅시다.
Thread Group > Add > Sampler > HTTP Reqeust 클릭
여기에 성능테스트를 할 서버의 정보(아이피, 포트, 페이지 주소등 )를 작성해 주면 됩니다.
요청을 많이 보내서 서버의 과부하가 왔을 때 응답을 무한 대기하고 있을 수 있기 때문에, 두 번째 탭인 'Advanced'에서 타임아웃 설정을 해주는 것이 좋습니다.
- Connect Timeout : 서버와의 연결을 시도할 때까지 기다리는 최대 시간(밀리세컨드)
- Response Timeout : 서버로부터 응답을 받을 때까지 기다리는 최대 시간 (밀리세컨드)
이제 응답결과를 확인할 수 있는 메뉴들을 추가해 보겠습니다. 다 왔습니다.
HTTP Request > Add > Listener에서 아래 이미지와 같이 6개 항목을 추가해 줍니다.
'jp@gc'로 시작하는 항목이 보이지 않는다면, 그래프 플러그인이 설치되지 않은 것입니다.
6. 추가 설정 팁
여기까지 설정해서 실행시켜도 충분히 괜찮은 성능테스트가 될 것입니다.
하지만, 한 가지 팁이 있습니다. 여러분이 특정 사이트에 들어가 본다고 가정해 봅시다. 네이버라고 해볼까요?
도메인을 입력해서 네이버 메인에 접속했습니다. 그다음 네이버 메인에 뜬 아무것도 보지 않고 바로 다음 행동을 하시나요?
아니죠? 인간은 잠깐 해당 페이지에 머무르죠?
JMeter에서 페이지에 머무는 시간을 설정할 수 있습니다. 이 설정은 현실적인 사용자 시나리오는 시뮬레이션하는데 도움이 될 수 있습니다.
'Add > Timer > Constant Timer'를 추가하시면 가능합니다.
위와 같이 설정하게 되면, 각 샘플 사이에 2초의 지연 시간이 발생하게 됩니다.
이제 모든 설정이 끝났습니다. 각 시나리오에 맞게 스레드 그룹값을 변경하면서 성능 테스트를 진행해 보시면 됩니다.
성능테스트를 하신다는 건 프로젝트 마무리단계를 진행하고 계실 거 같은데요, 프로젝트 마무리 잘하시고 고생하셨습니다.
다음 프로젝트가 여러분을 기다리고 있습니다.
'TIP ::' 카테고리의 다른 글
JSESSIONID 취약점 조치방안 (0) | 2023.02.24 |
---|---|
카멜리나 오일 다이어트 효능 섭취방법 및 주의사항 (0) | 2022.06.24 |
혈관 건강을 위한 혈당 낮추는 과일섭취 방법 (0) | 2022.06.24 |
차전자피 유산균 / 식이섬유가 풍부한 식품 (0) | 2022.06.23 |
서울도시가스 자동이체 신청/변경/해지 방법 (0) | 2022.06.21 |
댓글