Идентификация проблем памяти в приложении ASP.NET

select distinct применяется ко всем столбцам в строке. Таким образом, вы можете сделать:

select distinct col1, col2, col3
from t;

Если вы хотите, чтобы только col1 и col2 были различны, то group by работает:

select col1, col2, min(col3)
from t
group by col1, col2;

Или, если вы хотите случайный строки, вы можете использовать row_number(). Например:

select t.*
from (select t.*,
             row_number() over (partition by col1, col2 order by newid()) as seqnum
      from t
     ) t
where seqnum = 1;

Умная версия этого не требует подзапроса:

select top (1) with ties t.*
from t
order by row_number() over (partition by col1, col2 order by newid());
9
задан skaffman 29 January 2012 в 23:35
поделиться

6 ответов

Наблюдение этой презентации TecheEd Tess было бы хорошим началом.

Она демонстрирует использование adplus для взятия дампа приложения ASP.NET, которое использует много RAM, затем загружая тот дамп в WinDbg для анализа. Используйте! gcroot управляют в WinDbg, чтобы найти неожиданные корни и пойти оттуда. Она отговаривает от хранения составных типов, которые содержат ссылки на другие объекты в кэше или сессии.

2
ответ дан 4 December 2019 в 23:08
поделиться

Классическая проблема newing набор строк в цикле мог вызвать проблему, которую Вы видите из-за большого объема памяти, выделяемой для новых строк, не выпуская их. Вы используете StringBuilder в соответствующих случаях?

3
ответ дан 4 December 2019 в 23:08
поделиться

Хотя это - определенный блог о технологии, Вы, вероятно, не используете его, действительно покрывает, как диагностировать проблемы памяти - http://blogs.msdn.com/tess/archive/2008/09/12/asp-net-memory-issues-high-memory-usage-with-ajaxpro.aspx

Выройте посредством работы Tess, у нее есть большая отладка / сообщения диагноза, и я уверен, что можно найти больше, которые полезны для Вас.

1
ответ дан 4 December 2019 в 23:08
поделиться

Вы правильно не соединяете обработчики событий проводом везде? Мне говорят, что они могли бы сидеть без дела, если Вы никогда не отсоединяете их от события. Они могли бы сохранять ссылки на большие объекты дольше, чем необходимый.

1
ответ дан 4 December 2019 в 23:08
поделиться

Вы правильно избавляетесь от объектов классов та реализация IDisposable? Это включало бы SqlConnections, SqlCommand, SqlDataAdapter, DirectoryEntry, и т.д. У Вас есть какие-либо объекты, которые используют неуправляемую память, которые не реализуют IDisposable (и/или разве получение не расположено)?

0
ответ дан 4 December 2019 в 23:08
поделиться

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

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

Также оказывается, что на сайте моего сайта с количеством параллельных пользователей, которых я имел, грубая оценка концерта была, в чем это нуждалось.

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

Наконец, что не менее важно, проверьте, какого поставщика сессии Вы используете, если inproc помещает слишком много деформации на Вас сервер, возможно, его время для изменения на сеансовая служба состояния asp.net или использует SQL-сервер в качестве поставщика сессии.

Сообщите мне то, что Вы думаете и если Вы нашли и специфические особенности.

0
ответ дан 4 December 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: