Служба WCF не отправляет ответ, но и не выдает ошибку

Я сталкиваюсь со странным поведением, когда моя служба wcf wshttp заканчивает обработку данных (я знаю, потому что я записываю сообщение прямо перед тем, как возвращаю список людей), но клиент не получает ответ и сидит "завис". Я увеличил время ожидания до 2 часов, и хотя служба завершает получение данных через 20 минут, клиент будет зависать в течение 2 часов, прежде чем достигнет предела времени ожидания и получит исключение времени ожидания. Как вы, наверное, догадались, я возвращаю много данных из сервиса (около 50 тысяч сложных объектов). У меня есть атрибут [DataContract] для всего, что я хочу сериализовать.

Устранение неисправностей я сделал:

  1. В нашей тестовой среде сервис работает каждый раз и возвращается через 20 минут.

  2. Наши производственные серверы случайно сталкиваются с вышеуказанной проблемой. Иногда он возвращается через 20 минут, иногда клиент получает ошибку тайм-аута через час и 40 минут после фактического завершения службы.

  3. Я включил трассировку wcf, и последнее, что он отслеживает - это оператор Close ClientBase. Это последнее, что я делаю перед возвращением из метода (за исключением оператора log сразу после этого).

  4. Я установил большинство параметров конфигурации на их максимальные значения для обработки большого возвращаемого набора данных.

Это проблема с сервером / сетью? Любые другие шаги, которые я могу предпринять, чтобы отследить эту проблему?

Служба размещена в IIS7 Windows Server 2008 R2. Использование.net Framework 4.5.2.

1 ответ

Похоже, проблема была в балансировке нагрузки. Нам пришлось увеличить время ожидания ответа (и, возможно, размер ответа) на балансировщике нагрузки. Не уверен, где эти настройки находятся на lb, потому что наш сетевой администратор внес изменения.

Другие вопросы по тегам