высокая загрузка ЦП в процессе w3wp - PullRequest
1 голос
/ 02 августа 2011

У меня возникла проблема с моим веб-приложением asp.net c #, когда сервер работает с очень высокой загрузкой процессора, например.80% + на процесс w3wp.

Это произошло только недавно, после того, как я внес многочисленные изменения в свое приложение.Я вполне уверен, что это может быть одно из внесенных мною изменений, вызвавшее эту проблему при высокой загрузке ЦП на веб-сервере iis 7.

Можно ли проанализировать процесс и выяснить, что именно вызывает такое высокое использование?Или каков механизм устранения такой проблемы.

Ответы [ 2 ]

0 голосов
/ 02 августа 2011

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

Просто добавьте следующее на любые страницы, которые вы считаете подозрительными:

<%@ Page Trace="true" %>

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

0 голосов
/ 02 августа 2011

Пример использования ASP.NET: высокая загрузка ЦП в ГХ - крупные объекты и высокая скорость выделения :

Высокая проблема с ЦП обычно является одной из трех вещей

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

Попробуйте проверить счетчик % времени в GC и .NET CLR Memory / # Gen 0 Collections, # Gen 1 Collections и # Gen 2 Collections.

Вы вызываете GC.Collect() где-нибудь в своем коде?

Описываемая вами проблема также звучит симптоматично Высокая загрузка ЦП в приложении .NET с использованием статического Generic.Dictionary , вызванный несколькими потоками, попадающими в словарь.Если это проблема:

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

Связанный: Мониторинг производительности ASP.NET и время оповещения администраторов

...