Приложение ASP.NET слишком много перезагружается

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

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

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

29.04.2009 07:03:00
Я переместил Sessions из InProc в StateServer, поэтому повторное использование больше не является проблемой. Также подправлены некоторые части приложения для использования памяти. Я не привык заботиться о ресурсах из-за написания управляемого кода, но теперь я буду заботиться о нем.
Alper Ozcetin 10.06.2009 15:48:50
8 ОТВЕТОВ
РЕШЕНИЕ

Посмотрите этот пост в блоге о возможных причинах повторного использования домена приложения. Есть много возможных причин.

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

2
29.04.2009 07:42:41

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

0
29.04.2009 07:06:40

Я думаю, это переработка .

4
23.05.2017 10:27:27

Похоже, приложение перерабатывается или процесс не выполняется.

Проверьте настройки пула приложений http://msdn.microsoft.com/en-us/library/aa720473(VS.71).aspx

и просмотрщик событий.

1
29.04.2009 07:09:39

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

1
29.04.2009 07:11:33

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

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

0
29.04.2009 07:16:06

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

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

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

3
29.04.2009 08:10:12

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

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

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

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

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

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

1
29.04.2009 07:46:05