ASP.NET получить среднее использование процессора - PullRequest
1 голос
/ 24 мая 2010

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

Обновляемые данные находятся в кэше ASP.NET.Что я хотел бы сделать, если загрузка процессора составляет около 75%, я хотел бы просто пропустить кэш и перейти к базе данных на другом компьютере.

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

Есть ли простой способ получить среднее использование процессора?Есть ли какие-либо недостатки в этом?

Я также рассматриваю возможность суммировать число ожидания для блокировки и затем при определенном пороговом значении переключиться на базу данных.С этим подходом я столкнулся с тем, что смена аппаратного обеспечения может привести к большему количеству блокировок при меньшей нагрузке на систему.А также поиск правильного баланса для порога был бы обременительным и не учитывал любую другую нагрузку на машину.Но это простой подход, и он лучше в 99% случаев.

1 Ответ

1 голос
/ 24 мая 2010

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

Вы звучите так, как будто хотите контролироватьэто во время выполнения и обойти ваш кеш, когда дела идут интенсивно.Разве это не просто перенесет интенсивную обработку из вызовов кэша в вызовы вашей базы данных?Конечно, у вас есть кеш, чтобы избежать дорогостоящих вызовов БД.

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

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

  • .NET CLR Исключения
  • .NET CLR Память
  • Приложения ASP.NET
  • ASP.NET
  • Память
  • Файл подкачки
  • Процессор
  • Поток

Разделы в статье для CLR Tuning и ASP.NET Tuning , чтобы выделить узкие места, которые могут возникнуть, и предложить изменения конфигурации для повышения производительности.Мы, безусловно, внесли изменения в настройки пула потоков, чтобы повысить производительность.

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

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