Сессии ASP.NET повреждены под нагрузкой - PullRequest
7 голосов
/ 24 августа 2011

Мы видим, что под нагрузкой данные сеанса повреждены или отсутствуют, но сами сеансы остаются.

Наш веб-сайт размещен на IIS 7 под управлением ASP.Net 4.0 и использует состояние сеанса InProc в сети.- с 4 серверами за балансировщиком нагрузки устройства Cisco ACE.

В настоящее время проблема носит случайный характер, и мы не можем воспроизвести проблему по своему усмотрению.Это веб-приложение работало правильно в течение последних семи месяцев.

Мы понимаем, что Microsoft не рекомендует использовать InProc с веб-фермами, даже если используются липкие сеансы.

У нас есть лабораториясреда, в достаточной степени идентичная нашей производственной среде, но не способная воспроизводить ее при значительной нагрузке (мы используем WAPT).

В нашей производственной среде мы попытались изолировать только один сервер за балансировщиком нагрузки, чтобы устранить «скачкообразную перестройку сервера», вызванную самим балансировщиком нагрузки.Однако проблема сохраняется даже при работе на одном сервере.Мы не видим никакой переработки AppPool или IIS вообще в производстве.Как стандартная практика, мы ежедневно перерабатываем пулы производственных приложений в 3 часа ночи по восточному стандартному времени и наслаждаемся месяцами безотказной работы в операционной системе.

В сеансе хранится широкий спектр объектов от простых типов (целых чисел).и строки), на всю нашу корзину (сложный граф объектов) и даже экземпляр пользовательского элемента управления (.ascx).Из-за невозможности легко сериализовать многие из этих объектов мы не можем переключиться на внепроцессное хранилище сеансов за разумный период времени.

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

Я был бы очень признателен за любые идеи, которые кто-либо может иметь ...

1 Ответ

1 голос
/ 25 августа 2011

Основываясь на всей информации, собранной здесь, я собираюсь ответить с обоснованным предположением относительно того, в чем проблема.

Сессия, вероятно, как-то истекает.

Переработка пула приложений - не единственное, что может привести к истечению срока сеанса.И, как Гансельман скажет вам , это обычное явление, когда вы объединяете управление сессиями InProc и большую громкость.

Редактировать: Взгляните на более старая запись в блоге для IIS6 , в которой подробно описывается, как определить причину потерянных сеансов, подобных этой, особенно те, которые затрагивают конкретных пользователей, а не только все сеансы, что также может произойти.Интересующий раздел находится сразу после фрагмента кода Application_End, в котором говорится о Web Gardens.Я искал более новую информацию, похожую на эту, и все, что я действительно мог найти, где говорилось обо всех проблемах, было ответом на другой вопрос здесь, на SO .

...