부하 테스트에 대한 고려 사항
이 항목에서는 Visual Studio Ultimate에서 대규모 부하 테스트를 수행하기 위한 팁을 제공합니다. 다음과 같은 내용에 대해 설명합니다.
적절한 부하 패턴 선택
적절한 연결 모델 선택
샘플링 주기와 데이터 수집
인지 시간
웹 성능 테스트 요청의 응답 시간 목표 설정
타이밍 정보를 포함하여 백분위수 데이터 수집
새 사용자의 백분율 속성 설정
ASP.NET 프로파일러 사용
가상 사용자 로깅 사용
SQL 추적 사용
적절한 에이전트 컴퓨터 수 유지
적절한 부하 패턴 선택
일정 부하, 단계 부하 및 목표 기반 부하라는 세 가지 부하 패턴이 있습니다. 사용자의 부하 테스트에 적절한 부하 패턴을 선택하려면 각 유형의 장점을 파악해야 합니다. 자세한 내용은 모델 가상 사용자 동작에 대한 부하 패턴 편집을 참조하십시오.
상수 |
일정 부하 패턴은 장기간에 걸쳐 동일한 사용자 부하를 적용하여 부하 테스트를 실행하려는 경우에 유용합니다. 일정 부하 패턴에서 사용자 부하를 높게 지정하는 경우 부하 테스트에 준비 시간을 함께 지정하는 것이 좋습니다. 준비 시간을 지정하면 사이트에 수백 개의 새 사용자 세션이 동시에 생성되어 과부하가 걸리지 않게 할 수 있습니다. |
단계 |
단계 부하 패턴을 사용하면 사용자 부하가 증가함에 따라 시스템 성능을 모니터링할 수 있으므로 이는 가장 널리 사용되며 유용한 부하 패턴 중 하나입니다. 사용자 부하가 증가함에 따라 시스템을 모니터링하면 적절한 반응 시간을 유지하면서 지원 가능한 사용자 수를 판단할 수 있고, 반대로 성능이 저하되기 시작하는 사용자 수를 판단할 수도 있습니다. 각 단계에서 많은 수(예: 50명 이상)의 사용자를 추가하는 경우 단계 진입 시간 속성을 사용하여 각 단계의 사용자를 지정된 시간 내에서 점차적으로 늘리는 것이 좋습니다. 자세한 내용은 방법: 단계 부하 패턴에 대한 단계 진입 시간 속성 지정을 참조하십시오. |
목표 기반 부하 |
목표 기반 부하 패턴은 사용자 부하가 일반적으로 시간에 따라 증가한다는 점에서 단계 부하 패턴과 비슷하지만, 특정 성능 카운터가 일정 수준에 이르면 부하가 더 이상 증가하지 않도록 지정할 수 있다는 점이 다릅니다. 예를 들어 목표 기반 부하 패턴을 사용하여 부하를 점점 늘리다가 대상 서버 중 하나의 사용률이 75%가 되면 부하를 일정하게 유지할 수 있습니다. |
미리 정의된 부하 패턴이 사용자의 필요에 적합하지 않은 경우 부하 테스트가 실행되는 도중 사용자 부하를 제어하는 사용자 지정 부하 테스트 플러그 인을 구현할 수도 있습니다. 자세한 내용은 부하 및 웹 성능 테스트에 대한 사용자 지정 플러그 인 만들기 및 사용를 참조하십시오.
적절한 웹 성능 테스트 연결 모델 선택
부하 테스트 실행 설정에서는 WebTest 연결 모델 속성을 사용하여 웹 서버에 대한 사용자 연결을 모델링하기 위한 여러 가지 옵션을 지원합니다. 연결 모델에는 사용자별 연결, 연결 풀 및 테스트 반복별 연결이라는 세 가지 유형이 있습니다. 사용자의 부하 테스트에 적절한 연결 모델을 선택하려면 각 유형의 장점을 파악해야 합니다.
사용자별 연결 |
사용자별 연결 모델은 실제 브라우저의 동작을 가장 가깝게 시뮬레이션합니다. 웹 성능 테스트를 실행하는 각 가상 사용자는 각 웹 서버에 대해 최대 6개의 연결을 사용합니다. 연결은 해당 가상 사용자 전용으로 웹 서버에 대해 열린 상태로 유지됩니다. 웹 성능 테스트에서 첫 번째 요청이 발생하면 첫 번째 연결이 설정됩니다. 페이지에 종속 요청이 둘 이상 포함된 경우 추가 연결이 사용될 수 있습니다. 이러한 요청은 추가 연결을 사용하여 병렬로 발생할 수 있습니다. 이전 브라우저에서는 웹 서버별로 최대 2개의 연결만 사용되지만 FireFox 3 및 Internet Explorer 8에서는 웹 서버별로 최대 6개의 연결이 사용됩니다. 이러한 동일한 연결이 전체 부하 테스트 동안 해당 가상 사용자에 대해 다시 사용됩니다. 사용자별 연결 모델의 단점은 에이전트 컴퓨터에서 열려 있는 상태로 유지되는 연결 수가 사용자 부하의 6배가 되거나 여러 웹 서버를 대상으로 하는 경우 그 이상도 될 수 있으며, 이러한 다수의 연결을 지원하는 데 필요한 리소스로 인해 부하 테스트 에이전트 하나에서 생성할 수 있는 사용자 부하가 제한될 수 있다는 점입니다. |
연결 풀 |
연결 풀 모델은 여러 가상 웹 성능 테스트 사용자 간에 웹 서버에 대한 연결을 공유하여 부하 테스트 에이전트의 리소스를 절약합니다. 연결 풀 모델에서 연결 풀 크기는 부하 테스트 에이전트와 웹 서버 사이에 만들 수 있는 최대 연결 수를 지정합니다. 사용자 부하가 연결 풀 크기보다 크면 여러 가상 사용자가 실행하는 웹 성능 테스트에서 연결을 공유하게 됩니다. 응용 프로그램 계층에 최대 부하를 생성하려면 이 모델을 사용하는 것이 가장 좋습니다. 연결을 공유하는 경우 웹 성능 테스트 중 하나에서 연결을 사용하고 있을 때 다른 웹 성능 테스트에서 요청을 내보내려면 대기해야 할 수도 있습니다. 요청을 제출하기 전에 웹 성능 테스트에서 대기해야 하는 평균 시간은 부하 테스트 성능 카운터인 Avg. Connection Wait Time을 통해 추적됩니다. 이 시간은 페이지의 평균 응답 시간보다 작아야 합니다. 그렇지 않으면 연결 풀 크기가 너무 작은 경우일 수 있습니다. |
테스트 반복별 연결 |
테스트 반복별 연결 모델은 각 테스트 반복 후에 연결을 닫고 다음 반복에서 새 연결을 엽니다. 이 설정을 사용하면 네트워크 로그온의 스트레스가 최대화됩니다. 이 설정이 꼭 필요한 것이 아니면 앞의 두 옵션 중 하나를 사용하는 것이 좋습니다. |
샘플링 주기와 데이터 수집
부하 테스트의 길이에 따라 적절한 샘플링 주기를 선택해야 합니다. 5초 등의 짧은 샘플링 주기를 선택하면 샘플링 주기가 길 때보다 각 성능 카운터에 많은 데이터가 수집됩니다. 장기간에 걸쳐 데이터를 대규모로 수집하면 디스크 공간 오류가 발생할 수 있습니다. 부하 테스트가 긴 경우 샘플링 주기를 늘려 수집하는 데이터의 양을 줄일 수 있습니다. 성능 카운터의 개수도 데이터가 수집되는 양에 영향을 줍니다. 테스트 대상 컴퓨터에서 카운터 수를 줄이면 수집하는 데이터의 양도 줄어듭니다.
여러 주기를 시험하여 특정 부하 테스트에 가장 적합한 샘플링 주기를 판단해야 합니다. 그러나 우선 다음 표에서 제공하는 권장 샘플링 주기를 참고해 볼 수 있습니다.
부하 테스트 지속 시간 |
권장 샘플링 주기 |
---|---|
1시간 미만 |
5초 |
1-8시간 |
15초 |
8-24시간 |
30초 |
24시간 초과 |
60초 |
인지 시간
웹 성능 테스트 요청의 인지 시간은 적절한 응답 시간을 유지하면서 지원 가능한 사용자 수에 큰 영향을 줍니다. 인지 시간을 2초에서 10초로 변경하면 일반적으로 5배 많은 사용자를 시뮬레이션할 수 있게 됩니다. 그러나 실제 사용자를 시뮬레이션하는 것이 목표인 경우 해당 웹 사이트에서 사용자의 행동을 예측하여 적절한 인지 시간을 설정해야 합니다. 인지 시간과 사용자 수를 늘려도 웹 서버에 항상 추가 부담을 주지는 않습니다. 웹 서버가 인증된 경우 사용된 구성표 유형이 성능에 영향을 줍니다.
웹 성능 테스트에서 인지 시간을 해제하면 초당 요청 처리량이 높은 부하 테스트를 생성할 수 있게 됩니다. 인지 시간을 해제하는 경우 사용자 수를 인지 시간을 사용할 때보다 훨씬 작은 수로 줄여야 합니다. 예를 들어 인지 시간을 해제하고 1000명의 사용자를 실행하면 대상 서버나 부하 테스트 에이전트에 무리를 주게 됩니다.
자세한 내용은 부하 테스트 시나리오에서 인지 시간을 편집하여 웹 사이트 사용자 상호 작용 지연 시뮬레이션을 참조하십시오.
웹 성능 테스트 요청의 응답 시간 목표 설정
웹 테스트 요청의 속성 중 하나로 응답 시간 목표가 있습니다. 웹 성능 테스트 요청의 응답 시간 목표를 정의하면 부하 테스트에서 웹 성능 테스트가 실행될 때 부하 테스트 분석기에서 응답 시간이 목표에 도달하지 못한 웹 성능 테스트의 백분율을 보고합니다. 기본적으로는 웹 요청에 응답 시간 목표가 정의되어 있지 않습니다.
또한 응답 시간 목표 위반 규칙을 사용하는 경우에는 응답 시간 목표에 도달하지 못한 페이지로 인해 부하 테스트에서 오류가 발생합니다. 로그온 오류를 사용하는 경우 느린 페이지가 발생할 때 사용자가 수행하고 있던 작업을 확인할 수 있습니다.
자세한 내용은 방법: 웹 성능 테스트에 페이지 응답 시간 목표 설정을 참조하십시오.
타이밍 정보를 포함하여 백분위수 데이터 수집 및 세부 정보 뷰 사용
실행 설정에는 타이밍 정보 저장소라는 속성이 들어 있습니다. 이 속성을 사용하면 부하 테스트 도중 개별 테스트, 트랜잭션 및 페이지를 실행하는 데 각각 걸리는 시간이 부하 테스트 결과 리포지토리에 저장됩니다. 따라서 부하 테스트 분석기에서 가상 사용자 동작 차트를 볼 수 있습니다. 또한 부하 테스트 분석기에서 테스트, 트랜잭션 및 페이지 테이블에 90번째, 95번째 및 99번째 백분위수와 표준 편차가 표시됩니다.
부하 테스트 분석기를 사용하여 부하 테스트 결과의 세부 정보 뷰에서 가상 사용자 동작 차트를 지원하기 위해 타이밍 정보 저장소는 기본적으로 사용하도록 설정됩니다.
테스트 크기가 큰 경우에는 타이밍 정보 저장소 속성을 사용하지 않도록 설정하는 것이 좋습니다. 여기에는 두 가지 중요한 이유가 있습니다.
특히 부하 테스트가 긴 경우 부하 테스트 결과 리포지토리에서 타이밍 정보 데이터를 저장하는 데 필요한 공간이 매우 클 수 있습니다.
이 데이터는 부하 테스트 실행이 완료될 때까지 부하 테스트 에이전트에 저장되므로 부하 테스트가 끝날 때 부하 테스트 결과 리포지토리에 이 데이터를 저장하는 시간이 오래 걸립니다.
부하 테스트 결과 리포지토리에 사용할 수 있는 디스크 공간이 충분한 경우 타이밍 정보 저장소를 사용하여 백분위수 데이터를 가져올 수 있습니다. 타이밍 정보 저장소를 사용할 때는 StatisticsOnly 및 AllIndividualDetails를 선택할 수 있습니다. 두 가지 경우 모두 개별 테스트, 페이지 및 트랜잭션의 시간이 측정되고 개별 타이밍 데이터에서 백분위수 데이터가 계산됩니다. StatisticsOnly를 선택하면 백분위수 데이터가 계산된 후 리포지토리에서 개별 타이밍 데이터가 삭제됩니다. 데이터를 삭제하면 리포지토리에 필요한 공간이 감소합니다. 그러나 SQL 도구를 사용하여 타이밍 정보 데이터를 직접 처리하거나 가상 사용자 동작 차트에서 가상 사용자 정보를 볼 수 있도록 하려는 경우에는 타이밍 정보 데이터가 리포지토리에 저장되도록 AllIndividualDetails를 선택해야 합니다.
자세한 내용은 부하 테스트 분석기의 세부 정보 뷰에서 부하 테스트 가상 사용자 동작 분석 및 방법: 전체 정보를 수집하여 테스트 결과에서 가상 사용자 동작을 활성화하도록 부하 테스트 구성을 참조하십시오.
새 사용자의 백분율 속성 설정
부하 테스트의 각 시나리오에는 새 사용자의 백분율이라는 속성이 있습니다. 이 속성은 부하 테스트 런타임 엔진에서 웹 브라우저가 수행하는 캐시 작업을 시뮬레이션하는 방식에 영향을 줍니다. 새 사용자의 백분율의 기본값은 0입니다. 이는 각 가상 사용자가 테스트 반복 간에 종속 요청의 가상 캐시와 쿠키 목록을 유지함을 나타냅니다. 이 캐시는 브라우저 캐시와 같이 작동하므로 해당 URL에 대한 후속 요청은 실행되지 않으며 실제 웹 브라우저를 가장 유사하게 모델링합니다.
새 사용자의 백분율이 100%로 설정되어 있으면 각 사용자는 실제적으로 "일회성 사용자"가 되어 사이트를 다시 방문하지 않습니다. 이 경우 부하 테스트에서 웹 성능 테스트를 반복하여 실행할 때마다 사용자가 웹 사이트에 처음 방문하는 것으로 간주되므로 이전에 웹 사이트를 방문하여 브라우저 캐시에 남겨진 콘텐츠가 없는 것으로 처리됩니다. 따라서 웹 성능 테스트에서 이미지 등의 모든 종속 요청을 비롯한 모든 요청이 다운로드됩니다.
참고
웹 성능 테스트에서 캐시 가능한 동일 리소스가 여러 번 요청되는 경우는 제외됩니다.
웹 사이트의 응용 프로그램 계층에 최대 부하를 생성하려면 새 사용자에 기본값인 0%를 사용합니다. 그러면 실제 사용자를 보다 유사하게 모델링할 수 있을 뿐 아니라 대부분의 성능 문제가 발생하는 응용 프로그램 계층의 부하를 높일 수 있습니다. 자세한 내용은 방법: 웹 캐시 데이터를 사용하는 가상 사용자 비율 지정을 참조하십시오.
ASP.NET 프로파일러 사용
Microsoft Visual Studio 2010의 새로운 기능 중 하나는 부하 테스트를 실행하는 동안 응용 프로그램 계층에서 ASP.NET 프로파일러 데이터를 수집할 수 있게 해 주는 ASP.NET 프로파일러 진단 데이터 어댑터입니다. 실행 시간이 1시간 이상인 부하 테스트와 같이 오랜 시간이 걸리는 부하 테스트의 경우에는 프로파일러 파일이 수백 메가바이트까지 커질 수 있으므로 이 프로파일러를 사용하면 안 됩니다. 대신 보다 짧은 부하 테스트에 ASP.NET 프로파일러를 사용해도 성능 문제를 깊이 있게 진단할 수 있습니다.
자세한 내용은 방법: 테스트 설정을 사용하여 부하 테스트에 대한 ASP.NET 프로파일러 구성을 참조하십시오.
가상 사용자 로깅 사용
Microsoft Visual Studio 2010의 새로운 기능을 사용하여 실패한 테스트에 대한 전체 로그를 수집하거나 테스트 로그 빈도를 지정할 수 있습니다. 로그를 제어하는 데는 테스트 실패 시 로그 저장, 완료된 테스트에 대한 로그 빈도 저장 및 최대 테스트 로그 수 속성을 사용합니다. 수집되는 로그 수를 제어하는 데는 최대 테스트 로그 수 및 완료된 테스트에 대한 로그 빈도 저장 속성 설정을 사용합니다. 기본 설정을 사용하면 로그가 대량으로 수집되지 않습니다. 수백만 개의 요청을 생성하는 장기 실행 테스트의 경우에는 완료된 테스트에 대한 로그 빈도 저장 설정을 사용하면 로그 수가 너무 많아지므로 이 설정을 사용하지 마십시오. 또한 실제로는 오류 유형별 최대 로그 수를 제어하는 최대 테스트 로그 수 속성 설정은 적절한 값으로 유지해야 합니다. 수만 개의 로그를 수집할 경우 테스트 완료 시 로그를 수집하는 데 많은 시간이 소요되고 부하 테스트 데이터베이스의 저장소 공간도 많이 차지하게 되므로 이러한 설정을 사용하여 이를 방지해야 합니다.
자세한 내용은 부하 테스트 로깅 설정 수정을 참조하십시오.
SQL 추적 사용
실행 설정에는 SQL 추적 사용이라는 속성이 들어 있습니다. 이 속성을 통해 부하 테스트 동안 Microsoft SQL Server의 추적 기능을 사용할 수 있습니다. 부하 테스트가 실행되는 동안 별도의 SQL 프로파일러 세션을 시작하는 대신 이 방법을 사용하여 SQL 성능 문제를 진단할 수 있습니다. 이 속성을 사용하면 부하 테스트 분석기에 SQL 추적 데이터가 표시됩니다. SQL 추적 표의 테이블 페이지에서 이 데이터를 볼 수 있습니다.
이 기능을 사용하려면 부하 테스트를 실행하는 사용자에게 SQL 추적을 수행하는 데 필요한 SQL 권한이 있어야 합니다. 테스트 에이전트 및 테스트 컨트롤러를 사용하여 원격 컴퓨터에서 부하 테스트를 실행하는 경우 컨트롤러 사용자에게 SQL 권한이 있어야 합니다. 또한 추적 데이터 파일을 기록할 디렉터리(일반적으로 네트워크 공유)를 지정해야 합니다. 부하 테스트가 완료되면 추적 데이터 파일을 부하 테스트 리포지토리로 가져와서 부하 테스트에 연결하게 되므로 나중에 부하 테스트 분석기를 사용하여 이 데이터를 확인할 수 있습니다.
자세한 내용은 부하 테스트 실행 설정 구성 및 방법: 부하 테스트 편집기를 사용하여 SQL 추적 데이터 통합을 참조하십시오.
적절한 에이전트 컴퓨터 수 유지
에이전트 컴퓨터의 CPU 사용률이 75%를 넘거나 사용 가능한 실제 메모리가 10%를 밑돌게 되면 컴퓨터에 무리를 주게 됩니다. 이러한 경우 부하 테스트에서 에이전트 컴퓨터로 인해 병목 현상이 발생하지 않도록 테스트 컨트롤러에 에이전트를 추가해야 합니다.
자세한 내용은 테스트 컨트롤러 및 테스트 에이전트를 사용하여 여러 테스트 컴퓨터로 부하 테스트 분산 및 방법: 부하 테스트 시나리오에서 사용할 테스트 에이전트 지정을 참조하십시오.
참고 항목
작업
개념
부하 테스트 분석기를 사용하여 부하 테스트에서 임계값 규칙 위반 분석
기타 리소스
Consideration for Load Tests that Contain Web Performance Tests