내 wcf wshttp 서비스가 데이터 처리를 끝내는 이상한 동작이 발생합니다 (사람 목록을 반환하기 전에 메시지를 기록하기 때문에 알 수 있습니다). 클라이언트는 응답을받지 않고 "매달아"앉는다. 시간 제한을 2 시간으로 늘렸고 서비스가 20 분 후에 데이터 검색을 완료하더라도 클라이언트는 제한 시간에 도달하고 제한 시간 예외가 발생하기 2 시간 전에 중단됩니다. 아마 짐작 하듯이 서비스에서 많은 데이터를 반환합니다 (약 5 만 개의 복잡한 객체). 직렬화하려는 모든 것에 [DataContract] 특성이 있습니다.WCF 서비스가 응답을 보내지 않지만 오류도 발생하지 않습니다.
문제 해결은 내가했던 :
는 테스트 환경에서서비스 20 분마다 반환을 작동하는 것 같다.
우리 프로덕션 서버는 위의 문제를 임의로 처리합니다. 때로는 20 분이 지나면 반환되고 서비스가 실제로 끝난 후 1 시간 40 분 후에 클라이언트에 시간 초과 오류가 수신되는 경우가 있습니다.
wcf 추적을 사용하도록 설정하고 마지막으로 추적하는 것은 Close ClientBase 문입니다. 이것은 메소드에서 리턴하기 전에 내가 한 마지막 작업입니다 (그 직후의 로그 명령문 제외).
반환되는 대용량 데이터 집합을 처리하기 위해 대부분의 구성 설정을 최대 값으로 설정했습니다.
이 문제는 서버/네트워크 문제입니까? 이 문제를 추적하기 위해 취할 수있는 다른 단계는 무엇입니까?
서비스는 IIS7 Windows Server 2008 R2에서 호스팅됩니다. .net 프레임 워크 사용하기 4.5.2.
응답의 레코드 수가 네트워크 문제인지 일관되게 확인하는 지점까지 줄이려고합니다. 시간 초과가 발생했는지 확인하기 위해 1000 개의 레코드가 반환됩니다. 1000은 그냥 임의의 숫자지만 포인트를 얻으시기 바랍니다. – snit80
언급 한 것을 잊어 버렸습니다. 이미 그렇습니다. 적은 양의 데이터로 작업 할 수 있습니다. 대용량 데이터 또는 장기 실행 요청과 관련이 있습니다 ... –
원인을 찾은 것 같습니다. 부하 분산 장치 인 것처럼 보입니다. 어딘가에 응답 크기 제한이 있는지 확실하지 않지만로드 밸런서를 사용하지 않음으로써이 문제를 해결했습니다. 로드 밸런서에 대한 해결책을 찾을 수 있기를 바랍니다 ... 운이 아직 없습니다. –