Мониторинг пропускной способности в asp.net - PullRequest
4 голосов
/ 30 марта 2010

Привет, Мы разрабатываем мультитенантное приложение в Asp.Net с отдельной базой данных для каждого арендатора, в которой одно из требований заключается в мониторинге использования полосы пропускания для каждого арендатора,

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

так, какие есть доступные варианты, те, о которых я могу думать, могут быть

  1. IIS Log Monitoring - отдельное приложение, которое будет рассчитывать пропускную способность для каждого арендатора.
  2. Записывать каждый запрос и ответ для арендатора из приложения, а затем рассчитывать общее использование полосы пропускания на основе этого.
  3. Используйте некоторые компоненты третьей части, если они доступны

Так что, как вы думаете, будет лучшим подходом, даже если есть какой-то другой способ сделать это.

Ответы [ 3 ]

6 голосов
/ 30 марта 2010

Хорошо, вот идея (которую я не проверял, оставь это вам)

Вкл. global.asax используйте одну из этих функций (найдите ту, которая имеет действительный конечный размер)

Application_PostRequestHandlerExecute
Application_ReleaseRequestState

и получите размер, который вы отправили с

Response.Filter.Length

Нет необходимости отмечать, что вы получаете имя файла вызова, используя

HttpContext.Current.Request.Path

Эта функция вызывается при каждом отдельном запросе, поэтому вы можете получить свой размер, а все остальное.

Здесь следует заметить, что вам сначала нужно проверить эту идею, чтобы увидеть, работает ли она, и, возможно, улучшить ее, и иметь в виду, что если вы сжимаете страницы на сервере, длина не является правильной, и, возможно, вам нужно сжать его на Global.asax, чтобы получить реальную длину.

Надеюсь, эта помощь.

0 голосов
/ 30 марта 2010

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

ДОПОЛНЕНИЕ Является ли структура IIS тем, что у вас есть один веб-сайт, чтобы управлять ими всеми для всех арендаторов и при входе система разветвляется на соответствующую базу данных? Если это так, это может создать проблемы в отношении управления версиями, поскольку все сайты арендатора должны будут иметь одинаковую схему и все должны обновляться одновременно при обновлении приложения, так что требуется изменение схемы.

Другая структура, которая звучит примерно так, как у вас, состоит в том, что у каждого арендатора есть свой собственный веб-сайт, например:

tenant1_site/appvirtualdir
tenant2_site/appvirtualdir
...

Где appvirtualdir указывает на один и тот же физический путь для всех сайтов арендатора. Когда все клиенты имеют одинаковую версию приложения, они все используют буквально один и тот же код. Если у вас есть такой сценарий и какая-то аутентификация, то вам все равно понадобится один IP на каждого арендатора из-за SSL. SSL будет связываться только с IP и портом в отличие от не-SSL, который будет связываться с IP, портом и хостом. Если бы это было так, то мониторинг трафика на основе IP будет по-прежнему более простым и точным, как это может быть сделано на маршрутизаторе или через сетевой монитор.

0 голосов
/ 30 марта 2010

Что ж, поскольку журналы IIS уже содержат размер запроса и размер ответа, разработка небольшого инструмента для их синтаксического анализа и вычисления общего количества за день / неделю / месяц / что угодно, не представляет особых проблем.

...