Прошлой ночью я провел нагрузочный тест на сайте.Я обнаружил, что один из моих общих кешей является узким местом.Я использую ReaderWriterLockSlim для управления обновлениями данных.К сожалению, в какой-то момент примерно 200 запросов пытаются обновить данные примерно в одно и то же время.Это также совпало с скачками загрузки ЦП.
Обновляемые данные находятся в кэше ASP.NET.Что я хотел бы сделать, если загрузка процессора составляет около 75%, я хотел бы просто пропустить кэш и перейти к базе данных на другом компьютере.
Моя проблема в том, что я не знаю, какдорого это создать новый счетчик производительности, чтобы проверить использование процессора.Кроме того, если бы я хотел, чтобы среднее использование процессора за последние 2 или 3 секунды.Тем не менее, я не могу сидеть и вычислять время процессора, так как это займет больше времени, чем требуется для обновления кэша в настоящее время.
Есть ли простой способ получить среднее использование процессора?Есть ли какие-либо недостатки в этом?
Я также рассматриваю возможность суммировать число ожидания для блокировки и затем при определенном пороговом значении переключиться на базу данных.С этим подходом я столкнулся с тем, что смена аппаратного обеспечения может привести к большему количеству блокировок при меньшей нагрузке на систему.А также поиск правильного баланса для порога был бы обременительным и не учитывал любую другую нагрузку на машину.Но это простой подход, и он лучше в 99% случаев.