2014-10-30 4 views
0

IIS에서 호스팅되는 WCF 서비스가 있습니다. 서비스는 요청을 받고 요청 매개 변수 중 하나를 기반으로 요청을 자체적으로 처리하거나 다른 서버로 리디렉션합니다. 리디렉션 프로세스는 본질적으로 다른 기존 웹 서비스 (asmx)에 대한 호출입니다.WCF 서비스 - 통화 리디렉션 문제

우리가 직면 한 문제는 asmx 서비스를 직접 호출 할 때 20ms 이내에 응답을 얻지 만 WCF 서비스를 통해 응답을 받으면 응답 시간이 300ms로 줄어 듭니다. 내 가정은 요청이 WCF 서비스에서 asmx 서비스로 보내지기 전에 어딘가에 (IIS) 개최되고 있다는 것입니다. 그러나 성능 카운터를 확인하려고 시도했지만 아무 결론을 도출 할 수있는 카운터를 찾을 수 없었습니다. 나는 또한뿐만 아니라 매우 지표가 아니라 IIS 로그를 확인했습니다.

wcf 서비스를 호스팅하는 서버에서 asmx 서비스를 호스팅하는 서버에 ping을 시도했으나 응답을 되 찾는 데 겨우 3ms가 걸렸습니다.

통화에서 여분의 시간이 소비되는 곳으로 결론을 이끌 수있는 방법이 있습니까?

업데이트 - 필자는 Fiddler를 사용하려고했는데 응답 시간이 20 밀리미터 apprx가되었습니다. 피들러를 제거하면 응답 시간이 200 ms로 증가합니다.

프레임 워크 3.5에서 호출 할 때 Framework 2.0에 내장 된 서비스가 느리게 응답 할 가능성이 있습니까?

업데이트 2 우리는 프록시 문제로 범위를 좁혔습니다. 피들러에서 프록시 옵션을 해제하면 응답 시간이 길어집니다. WCF 서비스에 대한 호출은 asMx 서비스를 호출하는 basicHttpBinding에서 수행됩니다. 피들러가 프록시를 캐싱하고 다음에 다시 사용하는 것처럼 보입니다. 이 이해가 정확하다면 비슷한 일을 구현하는 방법이있을 수 있습니까?

+0

ANTS 프로파일 러 또는 Visual Studio와 같은 도구에서 프로파일 링 WCF 서비스부터 시작합니다. 게다가, 이것은 단일 통화 또는 무거운 하중 하에서 일어나는 일입니까? –

+0

이것은 단일 통화에서도 발생합니다. – vibhu

답변

0

우리의 서비스는 expect100Continue를 false로 설정했습니다. Wireshark를 사용하여 네트워크 전송을 확인한 결과, 요청이 끝날 때 expect100Continue가 추가되지 않으면 asmx 서비스를 호스팅하는 서버가 응답을 지연시키는 것으로 나타났습니다. expect100에 대한 추가 정보 여기에서 - expect100Continue

+0

우리의 응용 프로그램은 실시간 성능에 가깝습니다. 추가 논의가 있은 후에 useNagelAlgorithm을 false로 설정하기로 결정했습니다. expect100Continue를 유지하면로드 밸런싱 환경에서 문제가 발생할 수 있습니다. – vibhu