2009-04-29 2 views
3

У меня есть веб-сайт ASP.NET, который перезапускается каждые 1-2 часа в день, поэтому сеансы и прочее исчезли, и пользователи общаются с ним, потому что они открывают страницу и делают что-то в течение 20 минут, и когда они его подают, есть хорошая страница «Мы сожалеем».Перезапуск приложений ASP.NET слишком много

Я не делаю ничего, что перезапускает приложение (изменение файла web.config, изменение файлов или даже другие ошибки, такие как удаление папки в App_Data, которая обычно не должна приводить к перезапуску).

Может быть, это связано с оборудованием сервера? Это не так сильно.

+1

Я переместил сеансы из InProc в StateServer, так что переустановка уже не проблема. Также изменили некоторые части приложения для использования памяти. Я не привык уделять слишком много внимания ресурсам из-за написания управляемого кода, но теперь я буду заботиться. –

ответ

2

Check this blog post о некоторых возможных причинах для рециркуляции appdomain. Существует много возможных причин.

Если вы не можете исправить эту проблему, вы можете переключиться с состояния сеанса в процессе, чтобы выполнить запуск сервера состояния сеанса или сохранить состояние сеанса в базе данных. Оба варианта легко настраиваются и работают достаточно хорошо, но есть влияние на производительность (между 10-20% я думаю). There is a nice article here о том, как настроить сервер состояния сеанса.

0

Есть ли какие-либо указания о причине перезапуска в журнале событий?

1

Поскольку вы упоминаете, что ваш сервер невелик, вы можете проверить, не потребляет ли ваш рабочий процесс больше памяти, которую вы установили в своем processModel in machine.config. Это может привести к сбросу.

0

У вас есть антивирусное программное обеспечение, работающее на сервере. Изменение в файле web.config заставит ваше приложение перезапускать afaik, поэтому в некоторых случаях антивирусное программное обеспечение, проходящее через web.config, может изменять атрибуты файла, которые могут вызвать сброс.

Попробуйте отключить любое программное обеспечение AV или исключить каталог веб-приложений из автоматического сканирования AV.

3

Пулы приложений в IIS возвращаются по умолчанию - либо после таймаута, либо после «n» ударов.

Этого следует ожидать и является частью нормальной обработки (хотя его можно отключить в конфигурации приложения-пула: IIS6 | IIS7).

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

1

Вы действительно уверены, что приложение ASP.NET перезагрузилось? Или вы думаете, что это происходит из-за потерянной Сессии и т. Д.?

Какова переменная тайм-аута сеанса вашего приложения (и IIS)? Значение по умолчанию тайм-аута составляет 20 минут, поэтому я спрашиваю. Вы можете установить тайм-аут в своей сети.config следующим образом:

<system.web> 
    <sessionState timeout="120"/> 
</system.web> 

Но кроме этого есть места внутри самого IIS, где вы можете установить его. В случае IIS6 эти места:

  • Свойства виртуального каталога> Главная Каталог (вкладка)> Конфигурация (кнопка)> Параметры (вкладка)> Тайм-аут сеанса
  • Свойства виртуального каталога> ASP. net (tab)> Аутентификация (вкладка)> Тайм-аут cookie

Я не уверен, действительно ли нужны оба, но я обычно устанавливаю оба значения, равные тому, которое я установил в своем web.config.

Смежные вопросы