IIS прерывает поток запроса со статусом Win32 995.

Вопрос или проблема

У нас есть сайт, на котором возникают проблемы на продакшн-сервере, но не на моей машине разработчика, с прерыванием запроса (следовательно, нулевой ответ).

Каждый раз он отключается ровно через 1:19 минуты, а запрос на моей машине разработчика занимает примерно 1:44.

Длина содержимого около 650K, так что это не должно быть проблемой.

Производственная среда — Windows 2008 с IIS7, среда разработки — Windows 7 с IIS 7.5.

Их web.config идентичны, но конфигурация машины немного отличается (хотя они должны быть стандартными с установки).

Что может вызывать это?

При просмотре журнала доступа строка показывает 0 байт в ответе, но win32-код 995, который должен быть 0. Это последние столбцы из строки доступа:

sc-status sc-substatus sc-win32-status sc-bytes time-taken
200       0            995             0        76933

995, похоже, связан с “прерыванием потока” или чем-то подобным, поэтому я уверен, что это IIS прерывает запрос. Процесс w3wp.exe, похоже, работает некоторое время даже после остановки запроса, поэтому я не думаю, что веб-приложение вообще замечает это до того момента, когда пора писать в выходной поток.

ИЗМЕНИТЬ: сейчас попробовал с разными соединениями, и, похоже, мой фаерволл прерывает соединение из-за отсутствия данных (преждевременно). Следовательно, код 995.

У меня такая же проблема, в моем случае сетьевой адаптер является причиной sc-win32-status 995.
Что вы изменили в фаерволе, чтобы предотвратить это?
В диспетчере устройств => сетевой адаптер => свойства => расширенные вы можете установить несколько параметров, связанных с сетью.

Попробуйте проверить настройку “executionTimeout” в ASP.NET. По умолчанию это значение равно 110 секундам, что похоже на то, что вы сообщаете:

http://msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx

Это может присутствовать в любой из этих конфигураций:

  • Machine.config
  • Web.config на уровне корня
  • Web.config на уровне приложения
  • Web.config на уровне виртуального или физического каталога

Надеюсь, это поможет.

Ответ или решение

Абортирование потока запроса в IIS с кодом состояния Win32 995 может представлять собой сложную проблему, требующую внимательного изучения всех возможных факторов. Рассмотрим её более подробно, опираясь на предоставленное описание.

Теория

Код Win32 995 указывает на то, что операция ввода-вывода была прервана. Главным подозреваемым в данном случае выступает сущность IIS, которая может, по различным причинам, самостоятельно завершать обработку запроса. В отношении этого существует несколько возможных причин:

  1. Тайм-ауты. Системы IIS и ASP.NET используют ряд параметров, связанных с продолжительностью выполнения запросов. В частности, параметр executionTimeout в конфигурации ASP.NET может приводить к прекращению выполнения запроса, если он превышает установленное значение.

  2. Настройки сети. Брандмауэры и сетевые адаптеры могут прерывать соединения при обнаружении длительных периодов неопределенности в передаче данных. Это может происходить, если система ожидает данных дольше установленного времени ожидания.

Пример

На вашем продакшн-сервере запрос терпит неудачу ровно через 1:19 минуты, в то время как на девелоперской машине такого не происходит, и запрос обрабатывается за 1:44 минуты. Подобное расхождение указывает на возможные различия в конфигурациях сети или тайм-аутах между вашими средами.

Применение

  1. Проверьте тайм-ауты. Первым шагом вы должны проверить значение параметра executionTimeout в файлах конфигурации Machine.config или Web.config на вашем сервере производства. Убедитесь, что он установлен на значение, достаточное для обработки вашего запроса.

  2. Настройки сети. Исследуйте настройки брандмауэра, чтобы определить, не возникает ли преждевременное прерывание подключения. Вы можете настоять на изменении параметров, отвечающих за тайм-ауты соединения, либо поискать в настройках свойств сетевого адаптера элементы, отвечающие за сохранение соединения активным.

  3. Логи и мониторинг. Изучение логов IIS при помощи функций мониторинга серверов может предоставить дополнительные инсайты и указать на возможные ошибки выполнения.

Надеюсь, эти шаги помогут вам разобраться и решить возникшую проблему с кодом 995 в вашей производственной среде.

Оцените материал
Добавить комментарий

Капча загружается...