대규모 부하에 대한 Azure Load Testing 구성
이 문서에서는 Azure Load Testing을 사용하여 대규모 부하 테스트를 구성하는 방법을 알아봅니다. Azure Load Testing은 대규모 트래픽을 시뮬레이션하기 위한 인프라 프로비전의 복잡성을 추상화합니다. 부하 테스트를 스케일 아웃하기 위해 병렬 테스트 엔진 인스턴스 수를 구성할 수 있습니다. 최적의 부하 분산을 달성하기 위해 Azure Load Testing 대시보드에서 테스트 인스턴스 상태 메트릭을 모니터링할 수 있습니다.
필수 조건
활성 구독이 있는 Azure 계정. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
기존 Azure Load Testing 리소스. Azure Load Testing 리소스를 만들려면 부하 테스트 만들기 및 실행 빠른 시작을 참조하세요.
부하 테스트에 대한 부하 매개 변수 구성
애플리케이션에 대한 사용자 트래픽을 시뮬레이션하기 위해 부하 패턴 및 부하를 시뮬레이션하려는 가상 사용자 수를 구성할 수 있습니다. Azure Load Testing은 여러 병렬 테스트 엔진 인스턴스에서 부하 테스트를 실행하여 애플리케이션에 대한 트래픽을 시뮬레이션하는 가상 사용자 수를 스케일 아웃할 수 있습니다. 부하 패턴은 부하 테스트 기간 동안 부하가 분산되는 방식을 결정합니다. 부하 패턴의 예로는 선형, 단계별 또는 스파이크 부하가 있습니다.
부하 테스트 유형 즉, URL 기반 또는 JMeter 기반에 따라 대상 부하 및 부하 패턴을 구성하는 다양한 옵션이 제공됩니다. 다음 표에는 이 두 테스트 유형의 차이점이 나와 있습니다.
테스트 형식 | 가상 사용자 수 | 부하 패턴 |
---|---|---|
URL 기반(기본) | 부하 테스트 구성에서 가상 사용자의 대상 수를 지정합니다. | 램프 업 시간 및 가상 사용자 수를 기반으로 한 선형 부하 패턴. |
URL 기반(고급) | 부하 테스트 구성에서 테스트 엔진 수와 인스턴스당 가상 사용자 수를 지정합니다. | 부하 패턴(선형, 단계, 스파이크)을 구성합니다. |
JMeter 기반 | 부하 테스트 구성에서 테스트 엔진 수를 지정합니다. 테스트 스크립트에서 가상 사용자 수를 지정합니다. | 테스트 스크립트에서 부하 패턴을 구성합니다. |
URL 기반 테스트에 대한 부하 매개 변수 구성
URL 기반 부하 테스트에 대한 부하 매개 변수를 지정하려면 다음을 수행합니다.
Azure Portal에서 Azure Load Testing 리소스로 이동합니다.
왼쪽 탐색 창에서 테스트를 선택하여 모든 테스트를 봅니다.
목록에서 부하 테스트를 선택한 다음, 편집을 선택합니다.
테스트 구성은 테스트 세부 정보 페이지에서 편집할 수도 있습니다. 이렇게 하려면 구성을 선택한 다음, 테스트를 선택합니다.
기본 사항 페이지에서 고급 설정 사용을 선택해야 합니다.
테스트 편집 페이지에서 부하 탭을 선택합니다.
URL 기반 테스트의 경우 병렬 테스트 엔진 인스턴스 수와 부하 패턴을 구성할 수 있습니다.
엔진 인스턴스 슬라이더 컨트롤을 사용하여 병렬 테스트 엔진 인스턴스 수를 업데이트합니다. 또는 입력 상자에 대상 값을 입력합니다.
목록에서 부하 패턴 값을 선택합니다.
각 패턴에 대해 해당 구성 설정을 채웁니다. 차트는 부하 패턴 및 해당 구성 매개 변수의 시각적 표현을 제공합니다.
JMeter 기반 테스트에 대한 부하 매개 변수 구성
JMeter 기반 부하 테스트에 대한 부하 매개 변수를 지정하려면 다음을 수행합니다.
Azure Portal에서 Azure Load Testing 리소스로 이동합니다.
왼쪽 탐색 창에서 테스트를 선택하여 모든 테스트를 봅니다.
목록에서 부하 테스트를 선택한 다음, 편집을 선택합니다.
테스트 구성은 테스트 세부 정보 페이지에서 편집할 수도 있습니다. 이렇게 하려면 구성을 선택한 다음, 테스트를 선택합니다.
테스트 편집 페이지에서 부하 탭을 선택합니다. 엔진 인스턴스 슬라이더 컨트롤을 사용하여 테스트 엔진 인스턴스 수를 업데이트하거나 값을 입력 상자에 직접 입력합니다.
테스트를 편집하고 다시 실행할 때 새 구성을 사용하려면 적용을 선택합니다.
엔진 인스턴스 메트릭 모니터링
테스트 엔진 인스턴스 자체가 성능 병목 상태가 아닌지 확인하기 위해 테스트 엔진 인스턴스의 리소스 메트릭을 모니터링할 수 있습니다. 테스트 인스턴스의 리소스 사용량이 많을 경우 부하 테스트 결과에 부정적인 영향을 줄 수 있습니다.
Azure Load Testing은 각 인스턴스에 대해 다음 4개의 리소스 메트릭을 보고합니다.
- CPU 백분율
- 메모리 백분율.
- 초당 네트워크 바이트 수
- 가상 사용자 수
테스트 실행 기간 동안 평균 CPU 백분율 또는 메모리 백분율이 75% 미만으로 유지되는 경우 테스트 엔진 인스턴스는 정상으로 간주됩니다.
엔진 리소스 메트릭을 보려면 다음을 수행합니다.
Load Testing 리소스로 이동합니다. 왼쪽 창에서 테스트를 선택하여 부하 테스트 목록을 봅니다.
목록에서 부하 테스트를 선택하여 테스트 실행 목록을 봅니다.
테스트 실행 목록에서 테스트 실행을 선택합니다.
테스트 실행 대시보드에서 엔진 상태를 선택하여 엔진 리소스 메트릭을 확인합니다.
필요에 따라 필터 컨트롤을 사용하여 특정 테스트 엔진 인스턴스를 선택합니다.
비정상 엔진 인스턴스 문제 해결
하나 이상의 인스턴스에서 높은 리소스 사용량을 표시하는 경우 테스트 결과에 영향을 줄 수 있습니다. 문제를 해결하려면 다음 단계 중 하나 이상을 시도합니다.
테스트 엔진당 스레드(가상 사용자) 수를 줄입니다. 대상 가상 사용자 수를 달성하기 위해 부하 테스트에 대한 엔진 인스턴스 수를 늘릴 수 있습니다.
스크립트가 중복 코드 없이 효과적인지 확인합니다.
엔진 상태를 알 수 없는 경우 테스트를 다시 실행합니다.
초당 요청 수 확인
Azure Load Testing에서 부하 테스트에 대해 생성할 수 있는 최대 RPS(초당 요청) 수는 애플리케이션의 대기 시간 및 VU(가상 사용자) 수에 따라 달라집니다. 애플리케이션 대기 시간은 테스트 엔진에서 애플리케이션 요청을 보내고 응답을 받는 데 걸리는 총 시간입니다. 가상 사용자 수는 Azure Load Testing에서 지정된 시간에 수행하는 병렬 요청 수입니다.
초당 요청 수를 계산하려면 RPS = (VU 수) * (1/대기 시간(초)) 수식을 적용합니다.
예를 들어 애플리케이션 대기 시간이 20밀리초(0.02초)이고 2,000VU의 부하를 생성하는 경우 약 100,000RPS(2000 * 1/0.02)를 달성할 수 있습니다.
초당 대상 요청 수를 달성하려면 부하 테스트에 대한 총 가상 사용자 수를 구성합니다.
참고 항목
Apache JMeter는 성공 여부와 관계없이 서버에 수행하고 다시 돌아온 요청만 보고합니다. Apache JMeter에서 애플리케이션에 연결할 수 없는 경우 초당 실제 요청 수는 최댓값보다 낮습니다. 가능한 원인은 사용량이 너무 많아 서버에서 요청을 처리할 수 없거나 TLS/SSL 인증서가 누락된 것일 수 있습니다. 연결 문제를 진단하려면 부하 테스트 대시보드에서 오류 차트를 확인하고 부하 테스트 로그 파일을 다운로드할 수 있습니다.
테스트 엔진 인스턴스 및 가상 사용자
Apache JMeter 스크립트에서 병렬 스레드 수를 지정할 수 있습니다. 각 스레드는 애플리케이션 엔드포인트에 액세스하는 가상 사용자를 나타냅니다. 스크립트의 스레드 수를 최대 250개 미만으로 유지하는 것이 좋습니다.
Azure Load Testing에서 테스트 엔진 인스턴스는 Apache JMeter 스크립트를 실행합니다. 모든 테스트 엔진 인스턴스는 병렬로 실행됩니다. 부하 테스트에 대한 인스턴스 수를 구성할 수 있습니다.
부하 테스트에 대한 총 가상 사용자 수는 VU = (스레드 수) * (테스트 엔진 인스턴스 수)입니다.
대상 가상 사용자 수를 시뮬레이션하기 위해 JMeter 스크립트에서 병렬 스레드를 구성하고 이에 따라 부하 테스트에 대한 엔진 인스턴스를 구성할 수 있습니다. 테스트 엔진 메트릭을 모니터링하여 인스턴스 수를 최적화합니다.
예를 들어 1,000명의 가상 사용자를 시뮬레이션하려면 Apache JMeter 스크립트의 스레드 수를 250으로 설정합니다. 그런 다음, 4개의 테스트 엔진 인스턴스를 사용하여 부하 테스트(즉, 4 x 250개 스레드)를 구성합니다.
Azure Load Testing 리소스의 위치는 테스트 엔진 인스턴스의 위치를 결정합니다. Load Testing 리소스 내의 모든 테스트 엔진 인스턴스는 동일한 Azure 지역에서 호스트됩니다.
관련 콘텐츠
- Azure Load Testing의 서비스 제한 및 할당량에 대해 자세히 알아봅니다.