2008-10-15 4 views
2

여러 가지 상호 의존적 인 서비스를 성능 /로드 테스트해야합니다. 그들은 모두 net.tcp를 사용하며 대부분 이중 통신 계약과 내부 대기열을 사용합니다. [lock (syncRoot) {if (queue.Empty) Thread.Wait();을 사용하여 POCO 대기열 클래스를 핸들링 함. } 여기서 WCF 서비스 용 SLA 정의

내가 가지고 올 한 접근 방식 :

  1. 성능이
  2. 논리 시작점을 식별 서비스 각각에 대해 relavant 성능 카운터를 확인
  3. 을 테스트 할 WCF 서비스를 식별하는 테스트중인 서비스를 통해 실행을 수행합니다.
  4. 각 서비스에 대해 VS.Net을 사용하여 자동 생성 단위 테스트
  5. 특정 기능 테스트 작성 예, "주문하기"- 관련 서비스에 대한 모든 호출을 수행하고 일반적으로 필요한 모든 기능을 수행하는 테스트 작성 가능
  6. # 5를 실행하는 추적 파일을 사용하여 생성 Unit Tests [CodePlex에서 WCF Load Test 사용] (어떻게 든 디버그 환경에서 프로덕션/필드의 사용자 오류를 재현하는 이상적인 도구 인 것 같습니다. 면책 조항 : 도구를 사용하지 않았습니다. 프로젝트 내림차순) 읽기에서 노출
  7. 테스트 위의 자동
  8. 분석 성능 카운터에서
  9. 로그 데이터를 excercised하는 입력 그래서 다른 코드 경로에 변화를 소개 입력 데이터를 생성로 통화를 할 수 불통 될 수있다

    1. 더 나은 방법이 있나요 : 병목

    질문을 식별?

  10. 내부 대기열을 사용하는 서비스의 경우 표준 성능 카운터를 사용하여 성능을 측정 할 때 문제가 발생합니다. 맞춤 카운터가 필요할 수 있습니다.
  11. # 1이 맞으면 테스트중인 서비스 코드를 변경하지 않고 고객 카운터를 소개 할 수 있습니까?
  12. 내 기능 테스트 결과에 신경 써야합니까?
  13. WCF 서비스 용 SLA를 [non-intrusively] 구현할 수 있습니까? (요청한 서비스, 예외 발생, 응답 시간 등으로 충분한 카운터가있는 경우 SLA의 유효성을 검사 할 수 있어야합니다. 요청 당 2 초의 응답 시간으로 5 분 이내에 200,000 개의 요청을 처리 할 수 ​​있어야합니다. 내 질문은 아마 내가 SLA를 지정하고 제품/도구가 현장 뒤의 배관을 모두 할 수 있는지, 그리고 나에게 표로 된 대답을 줄 수 있는지 여부입니다. 알고 있습니다 ... 알고 있습니다 ... 나는 꿈을 꾸고있었습니다. :))
  14. 이외 : WCF 서비스에서 내부적으로 요청을 대기열에 넣는 가장 좋은 방법은 무엇입니까?

답변

1

와우 ... 제목이 분명히 빙산의 일각이었습니다! 나는 나의 응답에 기초가 떨어져서 여기에서 벗어나기를 바라지 않는다! 테스트 도구를 사용하여 마이크로 소프트 팀 테스트, 볼랜드 실크 출연자, 머큐리로드 러너, 또는 LoadGen하거나 사용자 정의 테스트 장치 같은 것을 같은 : :) WCF 서비스의

  1. 성능 테스트는 다양한 방법으로 수행 할 수 있습니다.필자가 선호하는 기능 단위 테스트를 작성한 다음 해당 테스트에 데이터를 입력하는 방식으로 테스트 도구를 사용하여 해당 테스트의 여러 동시 인스턴스 (가상 사용자)를 스핀 업하는 방식을 취하는 것이 좋습니다. . 대부분의 상업용 테스트 도구의 툴링은 이러한 유형의 테스트를 실제로 용이하게하므로 여기서 잘못 수행하기가 어렵습니다. 가장 큰 문제는 대개 응용 프로그램 테스트를 지원하기 위해 테스트 사례 및 테스트 데이터를 유지 관리하는 것에서 비롯됩니다.

  2. WCF에는 성능과 관련된 카운터가 없습니다. 사실은 사각 지대입니다. 물론 서버에 몇 개의 연결이 만들어지고 있는지 확인할 수 있지만 이는 거친 정보이므로 요청을 처리하는 서비스를 알고 싶을 것입니다. Microsoft의 'Dublin'은 WCF/WF를위한 풍부한 호스팅 환경을 제공하면서 호스팅 서비스의 성능 카운터 부상을 포함 할 것이라는 소문이 있습니다. 실제로 흔들리는 것을 기다려야합니다.

  3. 기존 코드베이스에 영향을 미치지 않으면 서 WCF 서비스를 구현해야 할 경우 서비스에 적용 할 수있는 WCF 동작에서 벗어날 수있는 마일리지가 얼마인지 살펴 봅니다. 이 사용자 지정 동작은 필요할 수있는 성능 카운터를 나타낼 수 있습니다.

  4. 예. 기능 테스트의 결과 (성능을 의미합니까?)에 관심이 있습니다. 주의 할 점은 무시할 수있는 시작 (JIT)이있을 가능성이 높다는 것입니다. 아마도 실행 메트릭을 얻기 위해 기능 테스트의 실행을 프로파일 링하려고합니다. 그러나 성능 실행 중에 코드 프로파일 링을 설정하지는 않습니다.

  5. SLA의 경우 사용자 지정 동작이 다시 답변 일 수 있습니다. 운영 메트릭을 데이터베이스에 기록한 다음이를보고 할 수 있습니다. Amberpoint 및 SOA Software와 같은 상용 제품은 성능 카운터를 포함하여이를 지원합니다.

  6. wcf 서비스에 대한 큐 요청? 나는 net.msmq 바인딩을 즉시 생각한다. 특히 당신의 요청이 튼튼한 것을 원한다면.