Мы наблюдали следующее поведение на одном из серверов, обслуживающих службу WCF в IIS 6.0:
- Журнал IIS показывает высокое значение для времени ( > 100000)
- Код состояния HTTP: 200
- sc-win32-status code показывает значение 64
Я узнал, что код sc-win32-status из 64 указывает: "Указанная сеть больше недоступна"
Первоначально я подозревал, что это может быть из-за ограничений, установленных на MinFileBytesPerSecond, который устанавливает минимальную пропускную способность, которую HTTP.sys применяет при отправке данных от клиента к серверу и обратно от сервера к клиенту. Но значение sc-bytes и cs-bytes указывает, что количество отправленных данных находится в пределах диапазона, обычно наблюдаемого для службы.
Также обратите внимание, что служба WCF размещается в четырех ящиках и сбалансирована по нагрузке, но проблема возникает только с одним из серверов. (но не по существу на том же сервере). Проблема также прерывистая.
Кто-нибудь еще столкнулся с этой ошибкой? Какие-нибудь подсказки о том, что может быть неправильно?
Обновление
Примечание. Наблюдение в IIS 7.5 (версия IIS не имеет большого значения)
Я смог воспроизвести эту проблему. Проблема возникает, если:
1. Служба WCF требует много времени для ответа
2. Прокси-сервер клиента истекает до получения ответа от сервера. В этом случае это приводит к выходу TimeoutException на клиенте.
3. Сервер продолжает ждать TCP ACK для клиента, которого он никогда не получит.
Следовательно, длительный тайм-аут (тайм-аут TCP-сокета (значение по умолчанию: 4 минуты) и sc-win32-статус 64
Таким образом, по сути, кажется, что код WCF требует много времени для ответа, а клиент отключается, то, что я наблюдаю в журнале IIS, является всего лишь симптомом, а не проблемой.