У нас есть веб-приложение, размещенное на IIS6, работающее на Windows Server 2003 с версией ASP.NET 2.0.50727. До прошлой недели приложение работало нормально. С этой недели мы регулярно получаем указанную ниже ошибку, вызывающую перезапуск рабочего процесса.
Неисправное приложение w3wp.exe, версия 6.0.3790.3959, неисправный модуль ntdll.dll, версия 5.2.3790.3959, адрес ошибки 0x0001a3e1.
Мы пытались переустановить .NET framework, а также IIS6, но безуспешно. Одно и то же веб-приложение отлично работает на другом компьютере с Windows Server 2003.
Наша ОС - Windows Server 2003 SP2. За последние 1-2 недели обновлений не было. Удивительно то, что в последний четверг все было хорошо, а на этой неделе дела пошли под откос.
К сожалению, сообщения об ошибках IIS не очень описательны. Я бы предложил установить что-то вроде Отладка IIS который будет запускать и контролировать IIS, а также регистрировать подробную информацию о сбоях при сбое, чтобы вы могли диагностировать проблему.
В системном журнале должно быть еще одно сообщение, подобное этому, с кодом ошибки:
Неожиданно завершился процесс, обслуживающий пул приложений MyAppPool. Идентификатор процесса был «3416». Код выхода процесса был «0xc0000005».
Вы можете найти код ошибки (код завершения процесса) с помощью Инструмент поиска ошибок Microsoft Exchange. Я знаю, что эта проблема не связана с Exchange, но этот инструмент хорош для поиска кодов ошибок из различных продуктов Microsoft.
Так что это должно дать вам начало поиску источника проблемы. Если вы еще этого не сделали, я бы предложил переместить приложение в отдельный пул приложений.
Чтобы получить дополнительную информацию о сбое, вы можете использовать Диагностика отладки. Время от времени у меня возникали проблемы с этим инструментом, поэтому вам может потребоваться использовать adplus, который является частью инструментов отладки для Windows. Вы можете использовать adplus вот так.
Найдите PID вашего пула приложений:
H:>% windir% \ system32 \ inetsrv \ appcmd list WP WP "4072" (applicationPool: RDWebAccess)
Запустите adplus против этого PID:
adplus –quiet –crash –p 4072 –o PATH_TO_DUMPFILE
Когда у вас есть дамп, вы можете загрузить его в WinDbg (который также является частью инструментов отладки для Windows) и запустить команду «! Анализировать -v», чтобы диагностировать сбой.
Я бы посоветовал отключить перезапуск для пула приложений перед включением adplus или диагностики отладки, чтобы пул приложений не отключал отладчик для перезапуска.
В зависимости от кода ошибки, также может быть хорошей идеей настроить журнал счетчиков в Perfmon, чтобы увидеть, можете ли вы соотнести любую конкуренцию за ресурсы (высокая загрузка ЦП, низкий уровень свободной памяти, большое количество ожидающих запросов и т. Д.) С сбоями.