본문

와탭모니터링
Jmeter + Whatap APM을 통한 부하테스트 솔루션

작성일 2024년 06월 24일

부하 테스트의 의미와 목적

 

Untitled (11).png

 

부하테스트란 시스템의 부하를 임의적으로 증가시켜, 시스템을 테스트하는 것을 뜻합니다. 정상 및 최대 부하 조건에서 애플리케이션이 어떻게 작동하는지, 그리고 최대 부하 조건 이하에서 발생하는 경우의 중단점을 확인할 수 있습니다.

 

부하테스트를 통해 하드웨어, 서버, 데이터베이스 등 구성요소의 성능을 미리 결정할 수 있습니다. 또한 로드 밸런싱 문제, 대역폭 문제, 시스템 용량 문제를 포함한 애플리케이션의 문제를 노출시켜 문제점을 확인할 수 있으며, 미래에 예상되는 부하를 관리할 수 있게 합니다.

 

부하테스트 방법

부하 테스트 도구 : Apache Jmeter

 

부하테스트 도구로는 Apache JMeter를 사용했습니다. Apache JMeter는 주로 웹 애플리케이션의 성능 테스트와 부하 테스트를 수행하기 위해 사용되는 오픈소스 소프트웨어입니다. JMeter는 Java로 작성되었으며 다양한 프로토콜을 지원합니다. 여기에는 HTTP, HTTPS, SOAP, REST, FTP, JDBC, LDAP, JMS 등을 포함하고 있습니다.

 

Apache Jmeter 설치 및 실행

1. Apache Jmeter사이트에서 OS에 맞는 프로그램을 다운로드합니다.

스크린샷 2024-06-17 오후 5.49.20.png


2. Apache-jmeter-5.xx → bin에 있는 ApacheJMeter.jar파일을 실행시킵니다. (*JAVA가 설치되어있어야 실행이 됩니다.)

스크린샷 2024-06-17 오전 11.50.12.png


3. Jmeter 테스트 및 기본 사용 방법

3-1. 스레드 그룹을 만듭니다.

  • 스레드 그룹이란 테스트 플랜이 수행할 하나의 그룹을 의미합니다.

Untitled (12).pngUntitled (13).png

 

  • 스레드의 수(사용자수) : 이 스레드 그룹에 생성될 스레드의 수를 지정합니다. (사용자의 수를 의미합니다.)

  • Ramp-up 시간(단위: 초) : 한 스레드가 시작한 후 다음 스레드가 시작될 때까지의 대기 시간을 지정합니다.

  • 루프 카운트 : 스레드 그룹에 속한 작업의 반복횟수를 지정합니다.

3-2. HttpRequest 추가

  • HttpRequest 요소는 HTTP 요청을 서버에 전송하여 그 결과를 받아옵니다.

  • 스레드 그룹 - 추가 - 표본추출기 - HTTP요청 선택

스크린샷 2024-06-17 오전 11.54.41.png

 

스크린샷 2024-06-17 오전 11.53.48.png


  • 서버 이름 또는 IP : 서버의 이름 또는 IP주소를 입력합니다.

  • 포트번호 : 접속시 사용할 포트 번호를 입력합니다.

  • 프로토콜 : 사용할 프로토콜을 입력합니다. (주로 HTTP or HTTPS)

  • HTTP 요청 - 경로 : 요청할 이름 및 경로를 입력합니다.

3-3. 테스트 결과를 출력해주는 모니터링 서버 연결


4.테스트 실행

 

 


 

Untitled (14).png

 

Jmeter 상단 메뉴의 초록색 플레이 모양의 실행 아이콘을 클릭하여 작동시킵니다.

 

스크린샷 2024-06-07 오후 2.31.42.png

 

Whatap모니터링 서비스를 통해 실행 결과를 확인할 수 있습니다.

 

APM과의 연동 필요성

 

스크린샷 2024-06-11 오후 2.33.27.png

JMeter는 부하 테스트 도구로, 다양한 시나리오에서 애플리케이션의 성능을 테스트할 수 있습니다. 그러나 JMeter 자체로는 서버 내부에서 발생하는 세부적인 성능 문제를 정확히 파악하기 어렵습니다. 하지만 와탭 애플리케이션 모니터링(APM)과 함께 사용하면 다음과 같은 추가적인 정보를 얻을 수 있습니다.

 

  • 애플리케이션 내부 메트릭: CPU, 메모리 사용량, 스레드 상태 등
  • 트랜잭션 추적: 요청이 애플리케이션 내부에서 어떻게 처리되는지 추적하여 병목 구간을 파악
  • 에러 및 예외: 실행 중 발생하는 에러와 예외를 실시간으로 확인 가능

실시간 모니터링 제공

JMeter를 통해 부하를 가하는 동안 APM을 이용하면 실시간으로 시스템 성능을 모니터링할 수 있습니다. 이는 다음과 같은 장점을 제공합니다.

  • 즉각적인 피드백: 문제가 발생했을 때 신속하게 대응 가능
  • 실시간 조정: 부하 테스트 중에도 테스트 조건이나 환경을 실시간으로 조정하여 더 다양한 시나리오 테스트 가능

이 외에도 사용자 친화적인 WhaTap의 UI로 보다 쉽게 분석할 수 있습니다.

Jmeter & WhaTap 분석툴 비교

부하테스트 시나리오 예시:

스크린샷 2024-06-17 오후 4.18.53.png

첫 번째 시나리오

  • 스레드수: 웹사이트에 접속한 사용자 수 100명
  • 루프 카운트 :사용자가 웹사이트에 접속을 반복하는 횟수 1회
  • Ramp-up 기간 : 다른 스레드가 시작될 때까지 대기하는 시간 2초

두 번째 시나리오

  • 스레드수: 웹사이트에 접속한 사용자 수 200명
  • 루프 카운트 :사용자가 웹사이트에 접속을 반복하는 횟수 1회
  • Ramp-up 기간 : 다른 스레드가 시작될 때까지 대기하는 시간 2초

세 번째 시나리오

  • 스레드수: 웹사이트에 접속한 사용자 수 300명
  • 루프 카운트 :사용자가 웹사이트에 접속을 반복하는 횟수 1회
  • Ramp-up 기간 : 다른 스레드가 시작될 때까지 대기하는 시간 2초

Jmeter를 통한 분석

<1. 결과들의 트리 보기>

스크린샷 2024-06-17 오후 1.32.39.png

  • Request: 각 요청의 상세 정보, 요청 메서드(GET, POST 등), 요청 URL, 요청 헤더, 요청 바디 등을 확인할 수 있습니다.
  • Response: 서버로부터 받은 응답의 상세 정보, 응답 코드(200, 404 등), 응답 메시지, 응답 헤더, 응답 바디 등을 볼 수 있습니다.
  • 뿐만 아니라 요청 및 응답시간, 응답 데이터 유형 등을 확인 가능합니다.

단점 : 결과 트리를 매 테스트마다 수동으로 저장해야 하고, 요청에 대한 자세한 정보를 얻기 어렵습니다.

<2. 종합 보고서>

 

Untitled (15).png

스레드수 100

 

스크린샷 2024-06-17 오후 1.40.01.png

스레드수 200

 

스크린샷 2024-06-17 오후 1.41.35.png

스레드수 300

  • 라벨: 각 샘플의 이름 또는 라벨
  • 표본 수: 각 샘플에 대해 실행된 요청의 총 개수
  • 샘플의 응답시간에 대한 정보
  • 오류율, 처리량(TPS) 등의 정보를 제공합니다.

단점: 매 테스트마다 분석 결과를 따로따로 저장해야만 해서 스레드 수에 따른 결과 추이를 보기 어려웠습니다.

 

<3. 응답시간 그래프>


Untitled (16).png

스레드 300일때의 5분간 응답시간 추이

 

테스트 실행 동안 시간이 지남에 따라 응답 시간이 어떻게 변화하는지를 보여줍니다.

단점: 응답시간 그래프를 출력할 수 있지만 확인하고 싶은 구간인 x축 설정이 불가했으며, 정확한 응답시간 분석도 불가했습니다.

Whatap 분석

 

<트레이스 분석>

 

스크린샷 2024-06-17 오후 4.10.22.png

APM은 서버 내부에 발생하는 정보를 알 수 있어, 어떤 트랜젝션이 발생했는지 뿐 아니라 서버 데이터도 확인할 수 있습니다.

  • 트랜잭션 상세정보 : 요청 값, 응답 데이터, 사용자정보
  • API 호출 분석 : API 응답시간, 호출빈도, 에러율
  • 데이터베이스 쿼리 분석 : 쿼리의 실행 시간 및 호출 빈도를 분석 가능합니다.
  • 이외에도 애플리케이션의 성능과 문제에 관한 다양한 정보를 포함하고 있습니다.

<성능 추이 분석>


스크린샷 2024-06-17 오후 4.37.14.png

성능 추이 분석을 통해 시나리오에 따른 성능 변화, 자원 사용량 분석 등이 가능합니다. 이를 통해 서버에 필요한 자원을 결정할 수 있습니다.

 

<그외 히트맵 분석>


스크린샷 2024-06-17 오후 4.41.03.png


Untitled (17).png

가로줄 패턴


Untitled (18).png

과부화 패턴


Untitled (19).png

폭주 패턴

 

트랜잭션의 특정 패턴을 분석하여 어느 곳에서 문제가 발생한 것인지 분석할 수 있습니다. 또한 부하 테스트와 관련된 주요 분석점은 다음과 같습니다.

 

트랜잭션 추적 및 상세 분석

 

Whatap을 통해 트랜잭션을 추적하여 애플리케이션의 각 계층에서 요청이 어떻게 처리되는지 분석합니다. 예를 들어, 웹 서버 -> 애플리케이션 서버 -> 데이터베이스 서버로 이어지는 요청 흐름을 추적합니다.

  • 트랜잭션 흐름: 각 요청이 애플리케이션 내부에서 어떤 경로를 거쳐 처리되는지 시각적으로 확인합니다.
  • 병목 구간 식별: 요청이 지연되는 구간을 파악하여 병목 현상을 식별합니다.
  • SQL 쿼리 분석: 데이터베이스 쿼리의 성능을 분석하여 느린 쿼리를 최적화할 수 있습니다.

성능 병목 지점 식별 :트랜잭션 추적을 통해 시간이 많이 소요되는 구간을 식별합니다. 예를 들어, 특정 데이터베이스 쿼리가 느리게 실행되는지 여부를 파악합니다.

부하 증가에 따른 성능 변화: 부하가 증가할 때 시스템 성능이 어떻게 변화하는지 분석하여 시스템의 확장성을 평가합니다.

 

WhaTap의 자세한 분석 방법은 다음을 참고해주세요

https://docs.whatap.io/learning-guides

편도훈[email protected]
Development Team인턴

지금 바로
와탭을 경험해 보세요.