2010-07-26 4 views
1

우리는 고전적인 ASP 환경에서 COM interop을 사용하여 .NET 구성 요소를 구현하여 새로운 작업을 수행하는 새로운 솔루션을 구현하고 있습니다. 이 솔루션은 훌륭하게 작동하고 있으며 팀 리더는 사이트에서 .NET 구성 요소로 작업하는 것은 처음이므로로드가 잘 걸리는지 확인하려고합니다.웹 서버에 새 구성 요소를 제대로로드 할 수 있습니까?

소개 한 새 코드가로드가 중단되지 않도록 적절한 테스트를 수행하기 위해 고려해야 할 사항은 무엇입니까?

내가 쿼리 문자열의 정보를 기반으로 새 구성 요소를 호출하는 간단한 ASP 웹 페이지를 만든 : 이미 뭘하는지


. 쿼리 문자열에는 또한 "off switch"매개 변수가 있으므로 구성 요소가없는 페이지를 기본값으로 테스트 할 수 있습니다. 구성 요소가 성공했는지, 실패했는지, 건너 뛴 것인지 여부를 나타내는 값을 반환하는 경우를 제외하고는 페이지 자체가 노출되어 있습니다.

각 호출시 데이터베이스의 고유 데이터를 사용하여 ASP 페이지에 대한 반복 호출을 수행하는 HttpWebRequest을 사용하는 간단한 콘솔 응용 프로그램을 작성했습니다. 모든 작업을 수행하고 페이지가 반환하는 값을 확인하고 데이터를 저장합니다.

그런 다음 내부 네트워크에있는 4 대의 다른 PC에 콘솔 응용 프로그램을 배포했습니다. 한 테스트에서는 각 컴퓨터에서 응용 프로그램의 인스턴스 하나를 설정하고 다른 인스턴스에서는 각 컴퓨터에서 응용 프로그램 인스턴스 다섯 개를 설정하고 모두 동시에 개발 서버를 시작하도록 구성했습니다. 응용 프로그램의 각 인스턴스는 웹 서버에 대해 150 번의 반복 요청을 수행했습니다.

각각의 시나리오 (각 컴퓨터의 인스턴스 하나가 각 컴퓨터에 하나씩 인스턴스가 &)에 대해 구성 요소를 호출하지 않고 한 번, 구성 요소를 호출하면서 두 번 테스트를 실행했습니다. 두 시나리오에서 요청되는 구성 요소의 성능은 구성 요소를 호출하지 않은 경우보다 요청을 완료하는 데 약 2.2 배의 시간이 소요되었습니다. 우리는 우리가 수행하고 있던 처리의 양과 데이터를 업데이트하기 위해 데이터베이스로 보내지는 트립 횟수를 고려할 때 매우 비싸지 않다고 생각했습니다. 또한 2.2x 비율은 4 개의 동시 연결로 서버를 쳤을 때와 20 개의 동시 연결로 서버를 쳤을 때 모두 일관성이있는 것 같았 기 때문에 정상적으로 작동하는 것으로 보입니다.

20 인스턴스 테스트는 새 구성 요소의 실행 여부에 관계없이 개발 서버에 많은 부하를가했지만 확실히 새로운 구성 요소는 스트레스를 받으면 충분히 공정한 것처럼 보였습니다. 그러나 나는 이것이 올바른 방향으로 가고 있는지 확인하기를 원하며, 필자의 구성 요소가 서버를 최대로드 하에서 필요로하지 않을 것이라는 것을 증명할 수있는 약한 테스트를 긍정적으로 지시하지는 않습니다.

답변

1

Visual Studio에는 부하 테스트 구성 요소가 있지만 실제로 한 것은 동일한 작업입니다. Visual Studio 솔루션의 이점은 성능의 병목 현상이 어디에서 발생하는지 파악할 수 있다는 점입니다.

테스트를 통과하거나 실패하는 열쇠는 "완료 시간이 맞습니까?"가 아니라 "주어진로드와 비교하여 총 응답 시간이 괜찮습니까?"입니다. 따라서 새로운 구성 요소와의 비교가 적절합니다.

테스트가 "로드가 잘 되더라도 중단되지 않습니다"라고 말하기에는 충분하지만 실제 하드웨어와 다른 테스트를 통해 테스트 한 결과 보증 할 수 없습니다.

초당 총 요청 수를 측정 했습니까? 이 값이 일 경우 최대 부하에서 실제 응용 프로그램에 대해 기대하는 것보다 많은보다 높고 응답 시간이 합리적이라면 테스트 결과에 대한 진정한 확신이 있습니다.

+0

THanks for your response. 요청을 완료하는 평균 시간을 측정 했으므로 초당 요청 횟수를 측정했다고 말할 수 있습니다. 내 요점은 내 구성 요소를 도입하면 무거운 하중과 가벼운 하중에서 같은 비율로 응답 시간을 늘렸다는 것입니다. –

+0

또한 VS 2010 Ultimate Edition에서만 테스트 구성 요소가 아닌 $ 10,000 SKU입니까? 리처드가 dotNetRocks Road Show에서 멋진 데모를하고있는 것을 기억합니다. –

+0

또한 2008 Test Edition입니다. 같은 비율을 사용하면 예측할 수있는 노력의 양이 꽤 좋은 징조임을 나타냅니다. 그러나 궁극적 인 조치는 너무 길면 절대적으로 "너무 오래 걸렸습니까"가 될 것입니다. 구성 요소를 실제로 두드려서 X 초가 지나면 응답합니다 (괜찮은 응답 시간이 필요하든간에). "틱"을 표시 할 수 있습니다. – Nat

1

대규모 응용 프로그램이 작동한다는 것을 증명하기 위해 사용했던 Push-to-Test와 Gomez 같은 회사가 있습니다. 둘 다 응용 프로그램을 통해 지정된 경로를 사용하는 많은 수의 사용자를 시뮬레이트합니다. (Gomez의 경우 실제 사용자의 컴퓨터에서 테스트 실행 소유자에게 페니를 지불합니다.) 수천 명의 동시 사용자를 시뮬레이트하고 가동 시간 모니터링과 같은 다른 서비스도 제공 할 수 있습니다.

두 가지 모두 유료 서비스이지만 Push-to-Test 소프트웨어는 Selenium을 기반으로하므로로드 테스트 프레임 워크를 빌드하거나 빌드 할 수 있습니다.

관련 문제