Home nGrinder로 테스트 전 알아야 할 사전 지식
Post
Cancel

nGrinder로 테스트 전 알아야 할 사전 지식

부하 테스트 전 알아야 할 사전 지식

performence test 설정

  • perfomance test를 생성할 수 있는 페이지

performence test 생성 화면

  • Test Name : 해당 테스트를 지정하는 이름
  • Agent : 테스트에 사용할 Agent 갯수 지정. 현재 max가 1개 이지만 위 Docker를 통해 Agent를 생성하는 과정을 통해 갯수를 늘릴 수 있음
  • Vuser per agent : Agent 별 Vuser의 수, 테스트할 사용자의 수
  • Script : 테스트할 Script
  • Duration : 테스트를 수행하는 시간
  • Ramp-Up : 조금씩 사용자를 늘려나갈 때 사용
    • 늘어나는 사용자의 숫자를 프로세스이기 때문에 Ramp-Up 기능을 사용하려면 프로세스 숫자가 높아야 함
    • x축: 시간흐름, y축: 동시접속자
    • ex) 초기 대기시간:2, Ramp-Up 주기: 2000 -> 즉, 2초마다 2개의 프로세스가 생성
      • Initial Count : 초기 Process/Thread 수
      • Increment Step : Process/Thread를 몇 개씩 증가시킬 건지
      • Intial Sleep Time : 초기 대기 시간
      • Interval : 얼마 주기로 증가시킬 건지

performence test 결과

  • TPS, MTT를 확인 할 수 있다. "nGrinder_Architecture"
  • 첫번째 그래프 (TPS)
    • nGrinder의 TPS는 Test Per Seconds의 약자로 초당 몇 번의 테스트가 일어났는지를 의미
    • 이상적으로 TPS는 VUser가 증가하는 것에 비례해서 증가
    • 어느 시점에 TPS가 더 이상 증가하지 않게 되는데 이 지점에 도달하는 순간 사용자의 응답시간에 영향을 줌
    • 이런 경우 scale up이나 scale out으로 TPS를 증가시킬 수 있음
  • 두번째 그래프 (MTT)
    • nGrinder의 MTT는 평균 테스트 시간 그래프로 한 번의 요청부터 응답까지 몇 초가 걸렸는지를 의미

테스트 종류

  • Smoke test
    • 최소 부하 상태에서 시스템에 오류가 발생하는지 확인하는 테스트
    • VUser: 1 ~ 2
  • Load test
    • 서비스의 평소 트래픽과 최대 트래픽 상황에서 기능이 정상 동작하는지 확인하는 테스트
    • 평소 트래픽과 최대 트래픽의 VUser를 계산 후 시나리오를 검증
    • 결과에 따라 개선하며 테스트를 반복
  • Stress test
    • 최대 사용자 혹은 최대 처리량인 경우의 한계점을 확인하는 테스트
    • 에러가 발생할 때까지 VUser를 계속 추가
    • 테스트 이후 시스템이 수동 개입 없이 자동 복구되는지 확인

VUser 계산

  • Load test 시 성능 목표를 정하기 위해서는 VUser를 계산해야 함
  • VUser를 구하기 위해서는 아래와 같은 지표들이 필요
    • DAU(일일 활동 사용자 수)
    • 피크시간대 집중률(최대 트래픽 / 평소 트래픽)
    • 1명당 1일 평균 요청 수
  • VUser 계산 예시

    VUser 계산 예시

  • 한달 방문자 210만, DAU를 210만/30(한달)로 계산하여 7만명으로 잡고 계산
  • 피크시간대 집중률은 저녁 시간대에 늘어날 것으로 예상, 최대 트래픽과 평소 트래픽의 차이가 크게는 없을 것이라고 생각하여 3배, 1명당 1일 평균 요청 수는 14로 가정하고 진행
  1. 지표 세팅
    • DAU(일일 활동 사용자 수): 70000
    • 피크시간대 집중률(최대 트래픽 / 평소 트래픽): 3
    • 1명당 1일 평균 요청 수: 14
  2. throughput(1일 평균 rps ~ 1일 최대 rps)을 계산
    • DAU * 1명당 1일 평균 접속수 = 1일 총 접속수 → 70000 * 14 = 980000
    • 1일 총 접속수 / 86400(초 / 일) = 1일 평균 rps → 980000 / 86400 = 약 11.3
    • 1일 평균 rps * (최대 트래픽 / 평소 트래픽) = 1일 최대 rps → 11.3 * 3 = 약 34
    • 즉 throughput은 11.3(1일 평균 rps) ~ 34(1일 최대 rps)
  3. VUser를 계산
    • VUser: (목표 rps * T) / R
      • R: 시나리오에 포함된 요청의 수
      • T: 시나리오 완료 시간보다 큰 값(VUser 반복을 완료하는데 필요한 시간보다 큰 값)
      • T = (R * 왕복시간(http_req_duration)) + 지연시간
        • 왕복 시간 = 얼마 안에 끝나야 하는지
    • 요청의 수는 7, http_req_duration을 0.5s, 지연시간을 1s로 설정한다면
      • R = 7
      • T = (7 * 0.5) + 1 = 4.5
      • 평소 트래픽 VUser: (11.3 * 4.5) / 8 = 약 7
      • 최대 트래픽 VUser: (34 * 4.5) / 8 = 약 22

다음

  • 성능 목표 설정

참고

This post is licensed under CC BY 4.0 by the author.