диагностика производительности сайта / пула приложений asp.net - PullRequest
2 голосов
/ 30 марта 2012

У меня проблема с веб-сайтом, разработанным с использованием ASP.Net/C#, иногда принимающим все использование процессора (100%) на неопределенный период времени.Есть ли у вас какие-либо идеи / советы, как можно поступить о том, что может быть причиной такого ресурсного борова?Сайт по-прежнему отвечает, поэтому он не падает или что-то в этом роде.

Я немного не знаю, с чего начать!

Спасибо!

Ответы [ 4 ]

1 голос
/ 30 марта 2012

Начните использовать счетчики производительности на сервере. Добавьте счетчики для сборки мусора, использования потоков и посмотрите, какой именно поток потребляет процессор.

Кроме того, проверьте это:

http://weblogs.asp.net/jgalloway/archive/2009/04/09/troubleshooting-an-intermittent-net-high-cpu-problem.aspx

0 голосов
/ 30 марта 2012

Лучшая и самая легкая отправная точка - использование профилировщика производительности.Просто запустите его, и, если повезет, вы исправите проблему за считанные минуты.

Попробуйте dotTrace , это неплохоЕсли вы перейдете по ссылке, у вас будет 10-дневная бесплатная пробная версия и видеоруководство.

0 голосов
/ 30 марта 2012

У меня была такая же проблема в прошлом. В основном у меня были проблемы с HTML rendering очень медленно. Я решил это, установив директиву Trace = true in page, и обнаружил событие, которое занимало время.

Другая проблема была Memory Management. Я использовал Image Classes и не Dispose их правильно. Для этого я начал использовать метод Dispose(), и у меня могут быть операторы Using в архитектуре.

using (SqlConnection con = new SqlConnection("Connection String"))
{
    using (SqlCommand cmd = new SqlCommand())
    {
        using (SqlDataReader DR = cmd.ExecuteReader())
        {

        }
        using (DataTable DT = new DataTable())
        {
        }
    }
}

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

Самый важный момент - Exception Handling. Try Catch блок не должен быть в каждом слое. Это должно быть только в Presentation Layer. Причина в том, что когда возникает исключение, оно возвращается непосредственно к вызывающей функции. Так зачем писать Try Catch блок и, следовательно, stopping the execution в каждом слое

0 голосов
/ 30 марта 2012

DebugDiag - отличное место для старта: http://www.microsoft.com/download/en/details.aspx?id=26798

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...