2016-09-01 8 views
0

내 wcf wshttp 서비스가 데이터 처리를 끝내는 이상한 동작이 발생합니다 (사람 목록을 반환하기 전에 메시지를 기록하기 때문에 알 수 있습니다). 클라이언트는 응답을받지 않고 "매달아"앉는다. 시간 제한을 2 시간으로 늘렸고 서비스가 20 분 후에 데이터 검색을 완료하더라도 클라이언트는 제한 시간에 도달하고 제한 시간 예외가 발생하기 2 시간 전에 중단됩니다. 아마 짐작 하듯이 서비스에서 많은 데이터를 반환합니다 (약 5 만 개의 복잡한 객체). 직렬화하려는 모든 것에 [DataContract] 특성이 있습니다.WCF 서비스가 응답을 보내지 않지만 오류도 발생하지 않습니다.

문제 해결은 내가했던 :

는 테스트 환경에서
  1. 서비스 20 분마다 반환을 작동하는 것 같다.

  2. 우리 프로덕션 서버는 위의 문제를 임의로 처리합니다. 때로는 20 분이 지나면 반환되고 서비스가 실제로 끝난 후 1 시간 40 분 후에 클라이언트에 시간 초과 오류가 수신되는 경우가 있습니다.

  3. wcf 추적을 사용하도록 설정하고 마지막으로 추적하는 것은 Close ClientBase 문입니다. 이것은 메소드에서 리턴하기 전에 내가 한 마지막 작업입니다 (그 직후의 로그 명령문 제외).

  4. 반환되는 대용량 데이터 집합을 처리하기 위해 대부분의 구성 설정을 최대 값으로 설정했습니다.

이 문제는 서버/네트워크 문제입니까? 이 문제를 추적하기 위해 취할 수있는 다른 단계는 무엇입니까?

서비스는 IIS7 Windows Server 2008 R2에서 호스팅됩니다. .net 프레임 워크 사용하기 4.5.2.

+0

응답의 레코드 수가 네트워크 문제인지 일관되게 확인하는 지점까지 줄이려고합니다. 시간 초과가 발생했는지 확인하기 위해 1000 개의 레코드가 반환됩니다. 1000은 그냥 임의의 숫자지만 포인트를 얻으시기 바랍니다. – snit80

+0

언급 한 것을 잊어 버렸습니다. 이미 그렇습니다. 적은 양의 데이터로 작업 할 수 있습니다. 대용량 데이터 또는 장기 실행 요청과 관련이 있습니다 ... –

+0

원인을 찾은 것 같습니다. 부하 분산 장치 인 것처럼 보입니다. 어딘가에 응답 크기 제한이 있는지 확실하지 않지만로드 밸런서를 사용하지 않음으로써이 문제를 해결했습니다. 로드 밸런서에 대한 해결책을 찾을 수 있기를 바랍니다 ... 운이 아직 없습니다. –

답변

0

부하 분산 장치가 문제였던 것 같습니다. 부하 분산 장치에서 응답 시간 제한 (및 응답 크기)을 늘려야했습니다. 네트워크 관리자가 변경했기 때문에 이러한 설정이 lb에 있는지 알 수 없습니다.