2014-09-19 1 views
1

Это должно быть легко, но мой мозг отказывается его обработать.Состояние приложения ASP.NET - создание счетчика «запросов в минуту»

В ASP.net прямо с целью создания глобального «счетчика запросов страницы» с использованием состояния приложения. Просто увеличьте прикладную переменную:

Application("Hitcount") = Application("HitCount") + 1 

или что-то еще. Но как я могу измерить только те образы, полученные в прошлую минуту? Мне требуется постоянный счетчик обращений к приложениям за предыдущие 60 секунд, чтобы позволить мне управлять трафиком входящих запросов. Например. если текущая нагрузка превышает 1000 ударов в минуту, а затем перенаправить куда-нибудь.

+1

Вставьте в базу данных (или приложение) «хит-запись» вместе с меткой времени. Тогда ваш запрос будет получать среднее количество запросов в минуту за последние 10 минут или около того. – mason

+0

Есть много показателей, доступных через Windows уже (хотя они, как правило, в секунду, а не в минуту). Существует довольно много сайтов с рекомендациями, по которым они, вероятно, являются наиболее значимыми и почему, например, [Важные счетчики IIS7] (http://blog.monitis.com/2012/04/02/important-iis7-counters/). –

ответ

2

Возможно, вы сможете сделать это с использованием кеша памяти. Это вычислило бы число запросов на выполнение в течение 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; 
    } 
} 
+0

Ссылаясь на [http://stackoverflow.com/a/16689455/1115360](http://stackoverflow.com/a/16689455/1115360), мне кажется, что это не спасет перезапуск пула приложений и, возможно, не экстремальный давление памяти. –

+0

@AndrewMorton Перезапуск пула приложений не так уж и сложный. Для создания скользящего среднего требуется всего 10 минут.Если все, что нас беспокоит, это «минута», вы можете изменить политику кэша на 60 секунд. – Shoe

+0

Спасибо за это; политика истечения срока действия кэша является хорошим решением. Однако я обнаружил, что использование «MemoryCache.Default.Add()» было для меня немного неустойчивым и, похоже, часто перезагружалось. В настоящее время хорошо работает с «cache.insert()» с истечением 60 секунд. – mel

2

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

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

Первый заказ - это настроить IIS, чтобы добавить некоторые нестандартные поля, которые являются частью стандартного формата ведения журнала W3C.

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/676400bc-8969-4aa7-851a-9319490a9bbb.mspx?mfr=true

IIS Logging

Один из способов настроить эти дополнительные поля через диспетчер IIS, при -> Logging Logging -> Select Fields

Поле, такие как байты Recvd/отправленные и timespent необходимы чтобы использовать один из сторонних анализаторов для получения хороших диаграмм.

+0

Каким образом OP выполняет перенаправление на основе данных из журналов IIS? – Shoe

+0

@Shoe - Что делать с переадресацией на анализ трафика сайта? – codenheim

+0

В соответствии с последним предложением OP ', если текущая нагрузка превышает 1000 обращений в минуту, а затем перенаправить куда-то. ' – Shoe

Смежные вопросы