JMeter는 서버의 성능을 테스트할 수 있는 서버 성능 테스트 tool로, 오픈소스여서 무료로 사용할 수 있다.
아래 링크를 통해 다운받아서 사용할 수 있다. 순수 자바 어플리케이션이기 때문에 자바 8 버전 이상 설치를 요구한다.
http://jmeter.apache.org/download_jmeter.cgi
회사에서 진행중인 프로젝트에서 서버 성능을 테스트하기 위해 설치했는데 이를 위해 일단 프록시 서버를 설정한 후, 요청 메세지를 얻을 것이다.
zip 파일을 다운받아 압축해제 후 jmeter.bat 파일을 실행하면 아래 캡쳐화면처럼 나타날 것이다.
JMeter는 테스트를 수행할 때 쓰레드를 생성하여 요청하는데, Thread Group은 쓰레드 생성 규칙을 정의하며, 여러 테스트에 대한 그룹 단위로 묶은 것을 의미한다.
Test Plan 우클릭 => Add => Threads (Users) => Thread Group
Thread Group 우클릭 => Add => Logic Controller => Recording Controller
Test Plan 우클릭 => Add => Non-Test Elements => HTTP(S) Test Script Recorder
패킷이 기록될 Controller를 설정한다. (포트는 디폴트 값인 8888로 설정되어있다.)
중앙에 있는 Start 버튼을 클릭하여 프록시 서버를 시작한다. bin 디렉토리 내에 인증서 파일이 생성되므로 인증서를 설치하여 HTTPS 통신이 가능하도록 설정하자.
시스템 설정에서 프록시 서버 포트를 앞서 설정했던 8888번으로 설정한다.
google에 접속하면 JMeter는 자동으로 패킷을 수집한다. Test Plan에 패킷이 기록되어 있으므로 이를 저장한다.
Thread Group 우클릭 => Add => Listener => Summary Report
아래 캡쳐화면처럼 Thread Properties에서 Number of Threads, Ramp-up period, Loop Count를 설정한다.
- Number of Threads : Thread의 개수로 사용자의 수를 의미한다.
- Ramp-up period : 하나의 Thread 당 실행 시간을 의미한다.
예를 들어, Number of Threads 값이 1000이고, Ramp-Up period 값이 10일 때, 1000명의 유저(Thread)를 생성할 때 까지 10초가 걸린다는 의미이다. 즉, 1초 동안 100명의 유저가 요청을 한다는 뜻이다.- Loop Count : 하나의 Thread가 수행할 작업 수를 의미한다.
일단 Summary Report를 클릭하나 후, 상단 메뉴들 중 Start 버튼을 클릭하여 Test를 시작한다. Test 결과 데이터를 아래 Save Table Data 버튼을 통해 .csv 파일 등으로 저장할 수 있다.
- #Sample : 서버 요청 횟수
- Average : 평균응답시간 (ms)
- Min : 최소응답시간 (ms)
- Max : 최대응답시간 (ms)
- Sts. Dev. : 표준편차
- Error % : 에러율
- Throughput : 처리량
- KB/sec : 초당 처리 KB
- Avg. Bytes : 평균 Bytes
Jmeter에서 잡은 요청 패킷에 파일 업로드가 필요할 경우, bin
디렉토리 내에 해당 파일을 복사한 뒤 경로 설정을 해준다.
Jmeter를 통해 패킷을 잡으면 요청 헤더에 Cookie 값은 저장되어 있지 않았다. 요청을 보낼 때 Cookie 값이 필요할 경우 직접 설정해주어야 한다.
bin\user.properties
파일을 열어 아래 내용을 추가 한다.
CookieManager.save.cookies=true
그 후, Thread Group 우클릭 => Add => config Element => HTTP Cookie Manager
HTTP Cookie Manager 에서 요청 패킷에 담을 Cookie 값을 설정하면 Test 실행할 때마다 해당 요청 값에 Cookie 값이 포함된다.
You will see a section where https://gas-stationsnearme.com/buc-ees/ you can select an Availability Zone. You can press any number you like, and I will proceed to 2 because someone is holding.