Это должно быть легко, но мой мозг отказывается его обработать.
В ASP.net он прямо намерен создать глобальный "счетчик запросов страницы", используя состояние приложения. Просто добавьте переменную приложения:
Application("Hitcount") = Application("HitCount") + 1
или что-то еще. Но как я могу измерить только те образы, полученные в прошлую минуту? Мне требуется постоянный счетчик обращений к приложениям за предыдущие 60 секунд, чтобы позволить мне управлять трафиком входящих запросов. Например, если текущая нагрузка превышает 1000 ударов в минуту, то перенаправление где-нибудь.
Возможно, вы сможете сделать это, используя кеш памяти. Это вычислило бы число запросов на выполнение в течение 10 минут. Однако я не проверял производительность этого.
public BaseController() : base()
{
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTime.UtcNow.AddMinutes(10);
MemoryCache.Default.Add(Guid.NewGuid(), "RequestCount", policy);
}
public int RequestCountPerMinute
{
get
{
return MemoryCache.Default
.Where(kv => kv.Value.ToString() == "RequestCount").Count() / 10;
}
}
Вероятно, вам лучше использовать инструмент анализа журналов, который даст вам статистику, анализируя журнал запросов, используя более широкое временное окно. Есть несколько хороших, которые позволяют переключаться между историческими окнами времени просмотра и просматривать ваш пиковый трафик в день, неделю, месяц.
Я рекомендую вам не вставлять запись о хите в базу данных, если ваш уровень сайта невелик. Избегайте связывать задержку запроса с базой данных, если вы не уверены, что служебные данные производительности превышают допустимые допуски. Инструментарий должен стремиться не влиять на сервер, который он измеряет, за исключением очень мягких накладных расходов, и именно поэтому анализ журнала после того, как этот факт работает хорошо.
Первый порядок ведения бизнеса - настроить IIS, чтобы добавить некоторые нестандартные поля, которые являются частью стандартного формата ведения журнала W3C.
Один из способов настройки этих дополнительных полей - через диспетчер IIS, под → Журнал регистрации → Выбрать поля
Поля, подобные байтам recvd/sent и timepent, необходимы для использования одного из сторонних анализаторов для получения хороших диаграмм.