스트레스 테스트 툴로 성능 측정

  • API 성능을 측정하려면 목표 latency를 잡아야 한다.

  • 목표 latency를 충족하기 위해 여러 값을 돌려보면서 스케일 업을 하거나 nginx를 두는 등 해결책을 생각해본다.

config:
  target: "http://00.00.00.00"
  phases:
    # 부하 테스트를 진행할 시간
    - duration: 60
      # 부하 테스트에 생성할 virtual user 수
      arrivalRate: 1
      name: Warm up
scenarios:
  - name: "just get hash"
    flow:
      - get:
          url: "/hash/123"
artillery run --output report.json cpu-test.yaml

부하 테스트를 실행한다.

artillery report report.json

테스트 결과를 html로 만든다.

  • arrivalRate: 1

  • arrivalRate: 8

염두에 둬야 할 것

  • 예상 TPS보다 여유롭게 성능 목표치를 잡는다.

    • 예상이 1000 TPS라면 트래픽이 몰릴 걸 예상해 최소 3~4천 이상으로 생각하고 인스턴스를 구성한다.

  • 기대 latency를 만족할 때까지 성능을 테스트한다.

    • 먼저 단일 요청에 대한 latency를 확인한다.

    • 기대치보다 높다면 스케일 아웃으로 해결되지 않는다.

    • 코드가 비효율적이거나 해당 API에서 I/O가 병목인 경우가 많다.

    • 네트워크에서 latency가 발생하는 경우도 있다.

  • 스케일 아웃으로 해결되지 않으면 여러 방면으로 병목을 의심해보자.

Last updated