Служба WCF не отправляет ответ, но и не выдает ошибку
Я сталкиваюсь со странным поведением, когда моя служба wcf wshttp заканчивает обработку данных (я знаю, потому что я записываю сообщение прямо перед тем, как возвращаю список людей), но клиент не получает ответ и сидит "завис". Я увеличил время ожидания до 2 часов, и хотя служба завершает получение данных через 20 минут, клиент будет зависать в течение 2 часов, прежде чем достигнет предела времени ожидания и получит исключение времени ожидания. Как вы, наверное, догадались, я возвращаю много данных из сервиса (около 50 тысяч сложных объектов). У меня есть атрибут [DataContract] для всего, что я хочу сериализовать.
Устранение неисправностей я сделал:
В нашей тестовой среде сервис работает каждый раз и возвращается через 20 минут.
Наши производственные серверы случайно сталкиваются с вышеуказанной проблемой. Иногда он возвращается через 20 минут, иногда клиент получает ошибку тайм-аута через час и 40 минут после фактического завершения службы.
Я включил трассировку wcf, и последнее, что он отслеживает - это оператор Close ClientBase. Это последнее, что я делаю перед возвращением из метода (за исключением оператора log сразу после этого).
Я установил большинство параметров конфигурации на их максимальные значения для обработки большого возвращаемого набора данных.
Это проблема с сервером / сетью? Любые другие шаги, которые я могу предпринять, чтобы отследить эту проблему?
Служба размещена в IIS7 Windows Server 2008 R2. Использование.net Framework 4.5.2.
1 ответ
Похоже, проблема была в балансировке нагрузки. Нам пришлось увеличить время ожидания ответа (и, возможно, размер ответа) на балансировщике нагрузки. Не уверен, где эти настройки находятся на lb, потому что наш сетевой администратор внес изменения.