Автоматически выходит из аккаунта в Identity из за превышения лимита по виртуальной памяти

Есть некий сайт, где с помощью Identity сделана авторизация. Сайт на компе работает без проблем, а когда залил его на хостинг, после входа в аккаунт когда произвожу какое нибудь действие (например: изменение данных и т.д.) выкидывает с него, как будто просто нажали на кнопку выйти. Данная проблема только с хостинг-провайдером reg.ru,в других нет. Приходится заного логинится. Техподдержка ответила так:

В записях журналов сервера, наблюдаем ошибки которые указывают на превышение лимита по виртуальной памяти:

30.10.2021 23:24:48 A worker process with process id of '20****' serving application pool 'u15*****.plsk.regruhosting.ru(domain)(4.0)(pool)' has requested a recycle because it reached its virtual memory limit.

30.10.2021 23:22:48 A worker process with process id of '28****' serving application pool 'u15*****.plsk.regruhosting.ru(domain)(4.0)(pool)' has requested a recycle because it reached its virtual memory limit.

из-за чего происходит перезапуск пула приложений.

Кто нибудь сталкивался с такой проблемой? Использование памяти(растет и растёт): введите сюда описание изображения


Ответы (1 шт):

Автор решения: Pavel Mayorov

Сессия устаревает при перезапуске приложения по той причине, что меняются ключи шифрования. По умолчанию, ASP.NET Core шифрует свои куки при помощи ключа, генерируемого на старте приложения, и, соответственно, не может расшифровать куки, сгенерированные до перезапуска.

Чтобы сохранять ключи между перезапусками, вам надо настроить их сохранение в файловую систему. Для этого требуется, во-первых, найти доступное для записи ключей место (вероятно, это будет где-нибудь в App_Data). Или же можно сохранять их в БД. Далее, нужно последовать советам из статьи Настройка защиты данных в ASP.NET Core и сделать как-то так:

var keyPath = Path.Combine(builder.Environment.ContentRootPath, "App_Data", "keys");
builder.Services.AddDataProtection()
    .PersistKeysToFileSystem(new DirectoryInfo(keyPath));

Обязательно убедитесь, что сам факт сохранения ключа в папку не приводит к перезапуску сайта.


Однако, несмотря на то, что настройка хранения ключей лишней не будет, она лишь устраняет симптомы. Если ваш сайт настолько часто перезапускается - ищите утечки памяти, ровно как и места её избыточного использования.

→ Ссылка