#asp.net #ajax #session-state
#asp.net #ajax #состояние сеанса
Вопрос:
у нас возникло довольно много проблем с нашим приложением, которое периодически испытывает проблемы с производительностью и использует ASPSTATE для управления состоянием сеанса. При больших объемах мы наблюдаем много блокировок с таблицами сеансов в ASPSTATE, что приводит к значительному снижению отклика пользователя.
Мы следовали множеству рекомендаций, предоставленных Microsoft в статьях KB и консультантами, включая обновление хранимой процедуры PurgeSession, а также внесение изменений в это, чтобы оно планировалось каждые 5 минут (начиная с 10 минут). Все еще безуспешно.
Прочитав множество блогов, ни одно из предложений, похоже, не может помочь — размер нашего сеанса довольно мал (в среднем 14 кб), хотя мы продолжаем видеть блоки, вызванные TempGetStateItemExclusive3 в периоды наших проблем.
Приложение использует AJAX в элементах — и я видел один комментарий в этом блоге, который предполагает, что использование AJAX и ASPSTATE может иметь потенциальные проблемы. Кто-нибудь сталкивался с этим и как это обойти? http://www.rjp-software.co.uk/blog/2010/03/asp-net-sessions-with-sql-server
Наш текущий план состоит в том, чтобы перейти в состояние сеанса INPROC с использованием sticky load balancer, хотя было бы неплохо узнать, действительно ли существует общая проблема с использованием AJAX и ASPSTATE!! Мне действительно трудно поверить, что никакая другая реализация не сталкивалась с этим…
Для информации, у нас около 4000 клиентов, подключенных к приложению (работающих на 4 серверах веб-приложений). Таблица сеансов, похоже, не превышает 3500 пользователей одновременно.
Комментарии:
1. 14 КБ состояния сеанса звучит как много.
2. Мы видим аналогичную проблему при достижении высокой нагрузки. Все еще не знаю, почему это происходит.