Существует информация о том, что происходит в сеансе InProc для удаления объектов сеанса, но это не то, что здесь происходит. Мы теряем отдельные переменные в стабильных объектах сеанса InProc и не уверены, не написаны они или не потеряны после успешной записи. Я подтвердил с помощью WinDBG, что сеансы живут и содержат некоторые, но не все, данные, написанные для них.IIS ASP.NET переменные сеанса InProc, случайным образом не записанные на сеанс
Guid g = System.Guid.NewGuid();
this.Context.Session.Add(g.ToString(), result.ImageData);
output.Write("<img src=\"display.aspx?id=" + g.ToString() + "\">");
Этот код довольно прост, и он работает безупречно в тесте. В производстве, при большой нагрузке, он не достигает ~ 1% времени. Если мистер Смит посещает сайт и пытается отобразить 4 части данных изображения, 2 из них могут быть сохранены в его сеансе, а два из них будут потеряны.
Объект сеанса InProc для г-на Смита существует. Журналы трафика показывают, что он нажал 4 раза, каждый с другим параметром id. Но в его объекте сессии InProc есть всего 2 гида, а не 4. Два объекта сеанса, которые мы сделали, действительно соответствуют 2 идентификаторам, указанным в журнале трафика (его первый и третий клики). Журналы трафика для его 2-го и 4-й клик, однако, показывает идентификатор guid, который отсутствует в его объекте сеанса InProc.
Линии 1 & 3 из вышеуказанного кода явно работал для этих 2-го и 4-го кликов, или у него не было идентификатора в URI, чтобы он мог щелкнуть. Строка 2, похоже, каким-то образом провалилась. Если бы было исключено какое-либо исключение, я бы ожидал, что мы никогда не достигли строки 3. Я не вижу никакого способа получить идентификатор guid, но сеанс не будет иметь его. Другая возможность - строка 2 успешно работала, но переменная позже исчезла, как я даже не могу себе представить.
Может ли кто-нибудь подумать о чем-нибудь еще? Или, может быть, предложение о том, как воспроизвести такую проблему?
Деталь: ASP.NET v3.5 IIS 6 Нет Web Садоводства Мы работаем веб-ферму, но пользователи постоянно возвращаться к одному серверу. Теперь я изучаю, есть ли способ, которым пользователи могут ускользнуть на другой сервер.
Я бы поставил на человек декли соскальзывание к другому серверу. В прошлом видели что-то подобное, «липкие сеансы» не всегда делают то, что говорят на олове! –
Учитывая высокую нагрузку, возможно ли, что у вас заканчивается память? Профилировали ли вы это? Кроме того, вы управляли фермой в разработке? – ScottE
Да. Slip-скольжения. Я не являюсь сетевым парнем и неправильно понимал функцию глобального выбора сайта по сравнению с коммутатором контента. Мы живем и учимся. Что касается памяти, я глубоко вникал в это, так хорошее предложение. – codepoke