2010-03-24 7 views
1

우리는 클라이언트와 서버 간의 웹 서비스 호출에 걸리는 시간을 추적하려고합니다. 이 시간에는 서버가 요청을 처리하는 데 걸린 시간이 포함되지 않아야합니다. 아이디어는 네트워크를 통해 실제 전송 통화로 인해 웹 서비스 호출 시간이 얼마나 손실되었는지 확인하고자하는 것입니다.WCF Webservice를 호출 할 때 경과 된 시간은 어떻게 측정합니까?

WCF는 이미이 방향으로 무엇인가를 제공합니까?

물론 나는 클라이언트에 타이머를 추가하고 서버 처리 시간을 빼기 만해도 매우 우아하지는 않습니다.

답변

3

WCF에는 성능 카운터가 많이 있습니다. MSDN docs on this topic을 참조하거나, 사용 방법에 대한 사용자 보고서는 How to use WCF Performance Counters을 확인하십시오.

또 다른 옵션은 WCF tracing을 켜는 것입니다. 메시지가 타임 스탬프를 포함하여 시스템을 어떻게 여행했는지에 대한 자세한 보고서를 얻을 수 있습니다. 이러한 비트를 기반으로 네트워크 등에서 보낸 시간을 확인할 수 있어야합니다. 매우 유용한 WCF Trace Viewer 도구가있어 이러한 추적 파일을 매우 쉽게 확인할 수 있습니다.

다른 옵션은 헤더를 사용하는 것입니다 (예 : DateTime 필드 : 메시지를 보낼 때 클라이언트에 첫 번째 헤더 ("ClientOut")를 추가하고 서버에 더 많은 정보 (예 : "ServerIn", "ServerOut")를 추가 한 다음 클라이언트의 마지막 정보 (예 : "ClientBackIn"). 실제 날짜/시간을 기록하면 해당 헤더를보고 클라이언트와 서버 사이의 이동에 소요 된 시간에 대한 정보를 볼 수 있어야합니다. 이런 식으로 WCF 용 Message Inspector 확장을 만들 수 있습니다.

0

기본적으로 평가가 충분하면 Ping 테스트 (ICMP Echo)로 클라이언트와 서버 간의 데이터 패킷 왕복 시간을 파악할 수 있습니다.

하지만 강력한 데이터를 필요로하는 경우, 당신은해야합니다 :

  1. 클라이언트와 서버가 동기화에 있는지 확인합니다. 이 작업은 양측을 계층 1 또는 계층 2 NTP/SNTP 서버 (RFC 958, 1305, 1361 참조)와 동기화하거나 일부 다른 동기화 프로토콜을 구현하여 수행 할 수 있습니다.
  2. 송신 및 수신시 각 "메시지"(메소드 호출)를 타임 스탬프합니다.
  3. 해당 메시지의 소요 시간을 계산하여 나열하십시오.
관련 문제