Примерно через полдня веб-сервер IIS 6.0 ASP (VBScript) умирает. Он принимает TCP-соединения (т.е. я могу telnet localhost 80
успешно), однако он не возвращает никакого ответа.
Когда я перезапускаю сервер (через Мой компьютер -> Управление -> IIS -> Все задачи -> Перезагрузить), я получаю много записей в C:\WINDOWS\system32\LogFiles\HTTPERR\httperr1.log
во время перезапуска, которые говорят:
... 80 HTTP/1.1 GET / - 843545307 Connection_Abandoned_By_AppPool DefaultAppPool
... 80 HTTP/1.0 GET / - 843545307 Connection_Abandoned_By_AppPool DefaultAppPool
... 80 HTTP/1.0 GET / - 843545307 Connection_Abandoned_By_AppPool DefaultAppPool
где ...
относится к префиксу строки, например
2010-03-17 10:05:06 127.0.0.1 4927 127.0.0.1 80
Всего таких строк 583 (Connection_Abandoned_By_AppPool
) в моем журнале во время перезапуска.
Что могло быть причиной этой проблемы?
Я предполагаю, что что-то с приложением не работает, в результате чего в очередь помещается целая куча запросов. Когда вы перезапускаете IIS, он не может догнать 90-секундный тайм-аут, поэтому он должен принудительно завершить все невыполненные запросы. Итак, то, что вы видите в httperr, - это аффект, а не причина.
Когда это не удается, работают ли статические страницы? Это скажет вам, виноват ли IIS или ASP. Ваш тест telnet отличный. Это полезно.
Проверьте журналы IIS непосредственно перед перезапуском и посмотрите, есть ли какие-либо другие подсказки относительно того, какие страницы являются серверными или какие последние несколько запросов успешно сработали. Это может дать еще несколько подсказок.
Perfmon имеет несколько счетчиков, которые могут показывать количество запросов очереди и ошибок. Возможно, вы сможете наблюдать за этим и отслеживать тенденции, когда он терпит неудачу, и, возможно, определить, когда впервые возникает основная проблема.