JMeter로 프록시 서버 설정하여 요청 패킷 수집 후 성능 테스트하기

옥영진·2020년 7월 1일
0

1. JMeter란?

JMeter는 서버의 성능을 테스트할 수 있는 서버 성능 테스트 tool로, 오픈소스여서 무료로 사용할 수 있다.

아래 링크를 통해 다운받아서 사용할 수 있다. 순수 자바 어플리케이션이기 때문에 자바 8 버전 이상 설치를 요구한다.
http://jmeter.apache.org/download_jmeter.cgi

회사에서 진행중인 프로젝트에서 서버 성능을 테스트하기 위해 설치했는데 이를 위해 일단 프록시 서버를 설정한 후, 요청 메세지를 얻을 것이다.

2. 프록시 설정

- JMeter 실행

zip 파일을 다운받아 압축해제 후 jmeter.bat 파일을 실행하면 아래 캡쳐화면처럼 나타날 것이다.

- Thread Group 추가

JMeter는 테스트를 수행할 때 쓰레드를 생성하여 요청하는데, Thread Group은 쓰레드 생성 규칙을 정의하며, 여러 테스트에 대한 그룹 단위로 묶은 것을 의미한다.

Test Plan 우클릭 => Add => Threads (Users) => Thread Group

- Recording Controller 추가

Thread Group 우클릭 => Add => Logic Controller => Recording Controller

- HTTP(S) Test Script Recorder 추가

Test Plan 우클릭 => Add => Non-Test Elements => HTTP(S) Test Script Recorder

- Targer Controller 설정

패킷이 기록될 Controller를 설정한다. (포트는 디폴트 값인 8888로 설정되어있다.)

- 프록시 서버 시작

중앙에 있는 Start 버튼을 클릭하여 프록시 서버를 시작한다. bin 디렉토리 내에 인증서 파일이 생성되므로 인증서를 설치하여 HTTPS 통신이 가능하도록 설정하자.

3. 패킷 수집

- 프록시 설정

시스템 설정에서 프록시 서버 포트를 앞서 설정했던 8888번으로 설정한다.

- 수집한 패킷이 기록된 Test Plan 저장

google에 접속하면 JMeter는 자동으로 패킷을 수집한다. Test Plan에 패킷이 기록되어 있으므로 이를 저장한다.

4. Test Plan 실행

- Summary Report 추가

Thread Group 우클릭 => Add => Listener => Summary Report

- Thread Group 설정

아래 캡쳐화면처럼 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가 수행할 작업 수를 의미한다.

- Test 실행

일단 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

아래 참조 링크에 나와있는대로 실행해보았고, 이 외에도 프록시 서버를 구성하지 않고 직접 HTTP Request를 생성하여 테스트하는 방법도 있고, 수행 결과 역시 Summary Report 외에 다른 결과 데이터를 얻을 수 있는 Listener들이 존재한다.

5. 파일 업로드

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 값이 포함된다.

profile
안녕하세요 함께 공부합시다

1개의 댓글

comment-user-thumbnail
2022년 11월 10일

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.

답글 달기