2012-07-01 2 views
0

WCF 서비스를 로컬에서 실행하는 데 문제가 있습니다. 서비스를 로컬에서 실행하면 WCF 서비스의 메서드가 호출 될 때까지 클라이언트에서 채널을 연 시간으로부터 약 60 초가 걸립니다. 준비 환경에서 실행되는 서비스에 연결하면 정상적으로 작동하고 속도가 저하되지 않습니다.VM의 로컬 호스트에서 실행 중 WCF 시간 초과가 발생했습니다.

  • 저는 VirtualBox에서 호스팅되는 VM 내부의 Windows Server 2008을 실행하는 새 상자에서 클라이언트와 서비스를 실행하고 있습니다.
  • IPV6 내가 유일한 예외가 클라이언트 시간 제한에 대해 생성되고 보여, 클라이언트와 호스트 모두에서 로컬 호스트
  • 자세한 로깅쪽으로 향하고 내 호스트 파일에 대한 참조를 가지고있는 VM
  • 비활성화되어 있습니다. 서비스 로깅은 요청 시작부터 끝까지 오랜 시간 동안 오류가 없음을 보여줍니다.
  • 나는 영향을 미치지 않고 Windows 방화벽을 끕니다.
  • 클라이언트와 서비스의 모든 구성 파일이 스테이징 시스템과 일치합니다.

다른 개발자의 문제는 어디에도 없습니다. 또한 windows7 (VM이 아님)을 실행하는 별도의 상자에이 문제가 없습니다. 우리의 스테이징 서버는 다른 VM 플랫폼에서 실행되지만 모든 VM (Server 2008)입니다.

+0

WCF를 통해 서비스 메서드를 실행하지 않는 경우 서비스 메서드는 얼마나 오래 걸립니까? 나는. 클라이언트에서 매개 변수 단위 테스트 및 피드를 만들지 만 완전히 in-proc으로 실행합니다. – Chris

+0

@Chris 디버거를 연결하고 처음부터 끝까지 메서드를 실행하면 매우 짧은 시간이 소요됩니다. 그것만이 오랜 시간 클라이언트에서 서비스로, 서비스에서 클라이언트로 –

+0

, 몇 가지 더 질문이 있습니다. 핑은 얼마나 걸리나요? 이게 유일한 전화 야? 후속 통화는 시간이 덜 걸립니까? – Chris

답변

0

매우 작은 요청을 보내고 각 응답을 기다리는 경우 Nagle's algorithm과 같은 모양입니다. 잠시 후 disabling it으로 테스트하십시오.

서비스에 대한 첫 번째 호출이 아니라 처음 10 시간 후에 만이를 보게된다면 세션 유출 일 수 있습니다. 이는 각 호출에 대해 새로운 서비스 클라이언트를 작성한 다음 닫는 것을 잊어 버리는 것을 의미합니다. ServiceThrottlingBehavior.MaxConcurrentSessions이 서버에서 고갈 된 후 각 후속 세션은 이전 세션이 종료 될 때까지 대기 한 다음 빠르게 성공합니다. CloseTimeout을 기본값 인 60 초로 줄여서 테스트하여보고있는 시간을 제어하는 ​​타임 아웃인지 확인하십시오. 그런 다음 세션 누수를 찾아 실제 해결을 위해 닫습니다.

두 경우 모두 맞지 않으면 service tracing을 구성하고 출력을 사용하여 질문을보다 자세하게 개선 할 수 있습니다.

+0

이것은 너무 오래 걸리는 단 하나의 요청입니다. 트래픽이 거의 발생하지 않습니다. –

+0

@AaronM - 두 가지 더 시도해 볼 답변을 편집했습니다. –

+0

추적을 켰습니다. 오류 메시지가 표시되지 않으며 추적으로 의심스러운 부분이 없습니다. 나는 기회가 생길 때 추적을 제출할 것이다. –

관련 문제