ASP.NET Session limit передовая практика - PullRequest
0 голосов
/ 15 февраля 2019

Мы запускаем приложение PaaS ASP.NET в службе приложений Azure с 3 экземплярами и управляем обработкой данных сеанса в базе данных SQL Server.

Приложение работает, и мы заметили большое количестводанных сеанса для некоторых пользователей при следовании по определенным путям, например, некоторые пользователи имеют данные сеанса выше 500 тыс. (для простого посещения сайта без входа в систему средний сеанс составляет около 750–3000 баллов, что я и ожидал).

500k звучит излишне, но мне было интересно, что нормально в крупных корпоративных приложениях в наши дни, и минусы, связанные с хранением такого большого количества данных в сеансе.

Мои первоначальные мысли были бы:

  • Не влияет на ЦП веб-приложения (возможно, фактически уменьшается), потому что не выполняет постоянно запросы,
  • Не влияет на веб-приложениеПамять, потому что мы запускаем outproc,
  • Большие пики в DTU в базе данных сеансов Sql Server при запуске сборки мусора,
  • Приложение может работать немного медленнее, поскольку чтение и запись данных сеанса между запросами занимает больше времени,
  • Может не быть идеальным для пользователей с плохим интернет-соединением,
  • Возможное увеличение утечек памяти, если объекты не правильно определены.

Имеет ли смысл мои рассуждениясмысл или я что то пропустил?

Буду признателен за любые мысли и советы,

Большое спасибо.

1 Ответ

0 голосов
/ 06 марта 2019

Я полностью согласен с вашими соображениями относительно использования внешнего управления сеансами в экземплярах приложения Azure. Использование сеансов IN-PROC в облаке - это строгое отрицание.Причиной размещения в облаке является высокая доступность, которая достигается с помощью распределенной среды.

Понимая с вашей точки зрения, я полагаю, что скорость вас беспокоит, или если она имеет значение для большинства веб-приложений,Чтобы преодолеть это, вы можете подумать об использовании Redis-кэша Azure.

Вот статья по настройке управления сеансами с использованием Redis-кэша Azure:

См. Документацию здесь: https://docs.microsoft.com/en-us/azure/redis-cache/cache-aspnet-session-state-provider

...