Как я могу отследить, сколько звонков я выполняю сторонним API, используя .NET? - PullRequest
2 голосов
/ 21 августа 2010

В некоторых наших веб-приложениях мы делаем вызовы к API 3-ей части, таким как Twitter и т. Д. Там нет ничего нового.

Мы хотели бы получить некоторую статистику об использовании нашего веб-сайта ->сколько звонков мы делаем каждый час и каждый день на различные бесплатные и платные сторонние API.

Я не уверен, как мы можем это сделать.

Теперь я использовал Счетчики производительности ранее в прошлом с большим успехом, но они очень ограничивают (если я не использую их правильно).Во-первых, они увеличивают / уменьшают значения int.Поэтому, если нам нужно увидеть, сколько трафика идет через определенный API за период времени , нам нужно иметь PerfMon , работающий ..., что невозможно (т.е. нашменеджеры не / не должны / никогда не получат доступ к живому веб-серверу (ам).

Так что я не уверен, что другие люди делают в сценарии?

Должен ли яу вас есть переменная состояния приложения, которая записывает время, когда был сделан запрос? тогда вы можете использовать linq или что-то еще для SUM / COUNT по GROUP? Как насчет веб-фермы сейчас? (Состояние приложения для каждой машины). Затем добавьте AppFabric?

Следующим типичным ответом является использование базы данных. Ну, это нормально ... пока у вас не будет много внешних запросов API ... что означает, что существует большой объем служебного трафика с сервера на БД ... который может замедлиться/ bottleneck вещи.

После этого я подумал, что, возможно, это случай смешивания опций. Использование кэша приложения, а затем каждые 5 минут, создание дампа в БД, если число изменилось. Это может привести кпроблемы с рекламой, но все же добавляет в систему дополнительную сложность.

Итак, я возвращаюсь к идее Performance Counters ... которая мне нравится (потому что она была закодирована в основную ОС для обработки больших объемов данных).трафик, не влияющий (или влияющий на минимально возможное количество) производительности .... но теперь я вернулся к шагу 1 - как я могу использовать счетчики перфорации для получения результатов, основанных на времени.

возможно, снова использовать состояние приложенияи каждый час / каждый раз при фиксированном времени сбрасывать результат в счетчик перфектов (вместо дБ)?

У кого-нибудь есть мысли, пожалуйста:)

Ответы [ 3 ]

0 голосов
/ 21 августа 2010

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

0 голосов
/ 15 марта 2011

.NET предоставляет CounterSample и CounterSampleCalculator, которые обеспечивают удобный доступ к данным счетчика производительности и возможность вычислять некоторые простые метрики (количество, скорость в секунду, среднее в течение определенного промежутка времени) на основе взятых образцов.

Я бы попросил веб-приложение записать данные в счетчики, а затем создать службу Windows, которая отвечала бы за их чтение (т. Е. Вместо perfmon.exe, который вы упомянули в своем первоначальном вопросе).

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

0 голосов
/ 21 августа 2010

Вы можете создавать свои собственные счетчики производительности, устанавливать их на хост-сервер, а затем нажимать на них при каждом звонке. Тогда вы получите количество хостов для вашего использования. Затем вы можете написать скрипт (PowerShell), который позволит вам собирать статистику счетчиков с различных серверов в ферме. Или вы можете использовать другую службу Windows, которая выполняет те же действия, что и сценарий powershell, и выдает статистику в базу данных для целей отчетности.

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

Счетчики производительности MSDN

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