aspnet_wp.exe перезагружается автоматически

Наше веб-приложение находится на .net 1.1, и у нас есть устаревший код, который зависает IIS через каждые пару дней.

Я думал об изменении настроек machine.config для перезапуска процесса aspnet через каждые пару дней, но проблема в том, что он убьет существующие сеансы в процессе. Могу ли я как-то этого избежать.

Есть ли лучший способ справиться с этой ситуацией? прямо сейчас клиент перезапускает IIS вручную каждые пару дней.

Спасибо

Редактировать: если у вас есть - несериализуемые объекты в вашем сеансе, - не могу работать с sql-сервером

Тогда хорошая работа - использовать "idleTimeout". Он останавливает процесс asp_net, если на сервере нет активности до указанного времени. При следующем запросе он порождает процесс asp_net.


person Ali    schedule 23.08.2011    source источник
comment
Тайм-аут простоя на рабочих сайтах почти никогда не является жизнеспособным решением, поскольку любой рабочий сайт должен иметь мониторинг, который будет обращаться к сайту достаточно часто, чтобы он не простаивал. Если вы настроите свой мониторинг за пределы времени простоя, вы будете часто получать ложные срабатывания сайта, который не работает, когда сайт активируется и не отвечает своевременно.   -  person Chris Marisic    schedule 24.08.2011
comment
Я не понимаю, idleTimeout закрывает сайт, и как только новый запрос попадает на сервер, он запускает процесс asp_net? Поправьте меня, если я ошибаюсь   -  person Ali    schedule 24.08.2011
comment
Предположим, вы установили время простоя на 15 минут бездействия. У вас есть служба мониторинга, которая опрашивает ваш сайт каждые 30 минут. Когда сайт простаивает, служба мониторинга будет вызывающим абонентом, который активирует ваш сайт. Первоначальный запрос, который включает в себя активацию, значительно медленнее, чем обычный запрос (может легко превышать 1 минуту). Многие мониторы автоматически помечают веб-сайт как неудавшийся, если он превышает X секунд для ответа. Это может привести к многочисленным электронным письмам посреди ночи, в которых говорится, что ваш сервис не работает, хотя на самом деле это не так.   -  person Chris Marisic    schedule 24.08.2011
comment
Согласен, но из-за нашего существующего устаревшего приложения iis начинает раздуваться с памятью в течение дня или двух (код написан хорошо). Мы не планируем обновлять его, так как мы уже находимся в процессе его переписывания. Думаю, на данный момент это правильный подход. Верно?   -  person Ali    schedule 24.08.2011
comment
Использование тайм-аута простоя не является разумным подходом, однако использование пула приложений для автоматического перезапуска является приемлемой временной мерой (намного лучше, чем необходимость повторного использования вручную ПОСЛЕ его поломки)   -  person Chris Marisic    schedule 24.08.2011
comment
Как я могу использовать пул приложений для освобождения/утилизации ресурсов?   -  person Ali    schedule 24.08.2011
comment
Мы не можем принять сеанс потерян.   -  person Ali    schedule 24.08.2011


Ответы (2)


Я предлагаю две вещи:

Конечно, еще лучше было бы обновить веб-приложение до последней версии фреймворка и заодно исправить проблему, чтобы этого не произошло.

person marapet    schedule 23.08.2011
comment
Переход на новую .net FW для нас не вариант (стратегия компании - мы находимся в процессе переписывания). использование sql-сервера - хорошая идея, но у клиентов нет на это лицензии. Думаю, я буду использовать idleTimeout для перезапуска, когда нет активных сеансов. - person Ali; 24.08.2011
comment
Следует переписать :-) просто веб-сайты .net 1.1 становится трудно поддерживать. Я только что упомянул об этом для полноты картины, вы сможете удовлетворить свои потребности, настроив параметры пула приложений. - person marapet; 24.08.2011
comment
Стратегию компании по использованию .NET 1.1 в 2011 году называют провальной. - person Chris Marisic; 24.08.2011
comment
@ Крис, я согласен, но, как написал ОП, они полностью его переписывают. - person marapet; 24.08.2011
comment
@marapet спасибо :) это приложение 8-9-летней давности без стандартов или лучших практик кодирования... - person Ali; 24.08.2011

Вы на самом деле храните какие-либо данные в сеансе? если вы это сделаете, это Serializable? Если это так, просто измените Web.config, чтобы использовать StateServer.

Вам просто нужно запустить службу состояний ASP .NET автоматически, перейдя в панель управления -> инструменты администрирования -> службы и настроив сервер состояний ASP .NET для автоматического запуска.

Это позволит вам перезапустить процесс aspnet_wp.exe без потери информации о сеансе; опять же, единственное требование состоит в том, чтобы информация, которую вы вводите в сеанс, была сериализуемой (что, вероятно, так и есть, или, по крайней мере, должно быть легко сделать, если ваш код не делает ничего сумасшедшего)

person Icarus    schedule 23.08.2011
comment
Спасибо, но у меня есть несериализуемые объекты в моей переменной сеанса. Я думаю, что idleTimeout - лучший способ для меня, так как я не могу переписать приложение и не могу использовать sql-сервер или сервер состояний... В любом случае спасибо всем - person Ali; 24.08.2011