2010-01-22 2 views
0

Я недавно перенес свое состояние сеанса ASP.NET из InProc в решение Sql Server. Я могу видеть, как данные сеанса вставляются в базу данных Sql Server. Я отслеживаю процесс w3wp.exe, используя «Частные байты» & Счетчики производительности «# Bytes in all heaps».Служба состояния сеанса ASP.NET на сервере Sql, но w3wp.exe #private увеличение

Как я просматриваю сайт, он помещает данные в сеанс, однако счетчик личных байтов все еще поднимается на сервер, на котором размещен веб-сайт? Я думал, что данные сеанса записываются в базу данных и не хранятся в памяти? Управляемые байты остаются постоянными, и я уверен, что все объекты, входящие в сеанс, управляются типами.

Кто-нибудь знает, почему частные байты все равно будут увеличиваться?

ответ

0

Сессия является лишь одним из многих объектов, необходимых для веб-сайта ASP.Net. Вы переместили хранилище сеансов из ОЗУ и в SQL, но есть много других необходимых объектов, не говоря уже о самих сделанных страницах.

+0

Спасибо за ваш ответ. Потребление памяти, однако, похоже, почти идентично, когда у меня все еще были объекты сеанса inproc. Объекты, которые я знаю, довольно большие (плохая практика, которые я знаю), которые вставляются в сеанс. Не увижу ли я какое-то уменьшение использования памяти? – dnoxs

+0

Эти объекты объектов объектов должны быть в ОЗУ в какой-то момент. Вы не заметите, что использование памяти этого процесса идет вниз, потому что память не будет выпущена процессом, если система не нуждается в ней. Таким образом, неиспользуемая, но зарезервированная память может быть повторно использована без необходимости перераспределения. Это стратегия оптимизации. – AUSteve

+0

Спасибо, имеет смысл. – dnoxs