본문 바로가기

항해99/스터디

[스터디] JMeter를 활용해서 부하 테스트 해보기

Apache JMeter

Apache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구이다.

JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다.

비슷한 부하테스트 도구로는 Apache Benchmark, Ngrinder, Pinpoint, Gatling등이 있다.

Gatling

  • 스칼라를 통해 테스트 스크립트를 생성하는 부하 테스트 도구이다.
  • 비동기식 아키텍처로 가상 사용자를 스레드가 아닌 메시지로 생성해 수천 명의 동시 사용자 재현가능한 성능 좋은 테스트 도구이다.
  • 분산 테스트 지원하지 않아 다 수의 컴퓨터를 통해 테스트 진행이 불가능하다.

JMeter

  • GUI를 제공해 쉽게 사용해 볼 수 있다.
  • 한 명의 가상 사용자를 하나의 스레드로 생성하여 동시성 제한이 있다.
  • 여러 대의 컴퓨터를 통해 테스트하고 결과를 종합할 수 있다.(분산 테스트 지원)

nGrinder

  • Jython, Groovy 스크립트를 활용해 테스트 시나리오를 작성 할 수 있다.
  • 한 명의 가상 사용자를 하나의 스레드로 생성하여 동시성제한 있다.
  • 여러 대의 컴퓨터를 통해 테스트하고 결과를 종합할 수 있다.(분산 테스트 지원)
  • JMeter 선정 이유
    • 타 테스트 도구들보다 참고할 수 있는 레퍼런스가 많다.
    • JMeter는 상대적으로 간단한 사용자 인터페이스를 가지고 있고, 러닝 커브가 낮아 성능 테스트를 더 쉽게 시작할 수 있다.
    • 테스트를 위해 GUI를 제공하는 동시에 사용자가 Java로 테스트 스크립트를 작성할 수 있다.

 

Number of Threads: 20 몇 개의 쓰레드(유저 수)로 테스트할 지

Ramp-up period: 30 {Number of Thread} 만큼의 쓰레드를 몇초에 걸쳐서 만들지

Loop Count: 40 요청을 몇번을 반복할 지 (설정된 값에 따라Number of Threads X Ramp-up period 만큼 요청을 다시 보낸다.)

총 10번의 요청. 평균(Average), 최소, 최대의 단위는 ms (미리세컨드)단위 평균 40ms의 응답시간, 최소 32ms, 최대 70ms

Label : Sampler 명

Samples : 샘플 실행 수 (Number of Threads X Ramp-up period)

Average : 평균 걸린 시간 (ms)

Min : 최소

Max : 최대S

td. Dev. : 표준편차

Error % : 에러율

Throughput : 분당 처리량

Received KB/sec : 초당 받은 데이터량

Sent KB/sec : 초당 보낸 데이터량

Avg. Bytes : 서버로부터 받은 데이터 평균오류 0%는 HTTP 응답 코드로 판단합니다. 예외에 해당하는 400번대 또는 500번대 응답이 없었음을 예상할 수 있습니다.

 

Authorization 입력하는 방법 + Body Content-type도 여기서 지정해줘야한다.

 

counter 설정을 해주면 지정한 starting부터 값을 자동으로 넣어준다.