mvc-mini-profiler — работа с веб-ролью с балансировкой нагрузки (azure и др.)

Я считаю, что мини-профилировщик mvc — это что-то вроде «божьей милости».

Я включил его в новый проект MVC, ориентированный на платформу Azure. У меня вопрос: как справиться с профилированием через барьеры сервера (экземпляра роли)?

Это вообще возможно?


person Andrew Harry    schedule 25.07.2011    source источник


Ответы (2)


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

Одиночный запрос по-прежнему будет выполняться в одном экземпляре, и вы получите данные из того же экземпляра. Если вы хотите также профилировать службы, расположенные на другом физическом уровне, для этого потребуются другие подходы; включая связь через внутренние конечные точки, которые, я уверен, мини-профилировщик не поддерживает из коробки. Однако модификация не должна быть такой сложной.

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

person Anže Vodovnik    schedule 25.07.2011
comment
в то время как запрос выполняется в одном экземпляре, реализация профилировщика по умолчанию такова, что результат сохраняется в текущем кэше ASP.Net, а затем предоставляется клиенту с помощью вызова ajax, и этот вызов ajax не гарантируется попасть на тот же сервер. - person Stuart; 27.07.2011
comment
Честно говоря, ради профилирования я бы профилировал непосредственно на удаленном экземпляре и даже не использовал балансировщик нагрузки. Я хочу исключить внешние службы при профилировании, не выясняя, имеют ли они какое-либо отношение к этому. Но, сказав это, я также согласен с вашим ответом о том, как вы могли бы заставить его работать независимо. Но, опять же, я бы профилировал с помощью RDP непосредственно на экземпляре. - person Anže Vodovnik; 28.07.2011
comment
Я с вами частично согласен... Однако иногда вы хотите исследовать проблемы, возникающие в производственной среде, то есть при нормальной рабочей нагрузке, и вы не можете этого сделать, если используете RDP, поскольку это снимает нагрузку с веб-сервера. список балансировщиков. Однако это только одна ситуация, и я допускаю, что существует множество других ситуаций, в которых вы можете использовать решение RDP. - person Stuart; 29.07.2011
comment
Стюарт, где вы увидели, что он исключен из списка Load Balancer? Поскольку я вам не поверил, я пошел дальше и провел тест, и балансировщик нагрузки перенаправил запросы к обоим моим экземплярам (успешно), в то время как я подключился к экземпляру 0 по протоколу RDP. - person Anže Vodovnik; 29.07.2011
comment
Я не знаю, где я это услышал — я думаю, либо в прямом эфире pdc2010, либо на последующем мероприятии в Великобритании, — но я уверен, что мне это сказали. Я только что просмотрел msdn.microsoft.com/en-us/gg502181 и вы выглядите правильно - так что извинения (и спасибо!). - person Stuart; 29.07.2011
comment
В прошлый раз, когда я проверял, этот сайт предназначен для обмена знаниями, так что добро пожаловать :о) Просто, кстати, если бы это было правдой, вы правы, это сделало бы профайлер бесполезным для этого (вполне реального) сценария. - person Anže Vodovnik; 29.07.2011

По умолчанию mvc-mini-profiler сохраняет и доставляет свои результаты, используя HttpRuntime.Cache. Это вызовет некоторые проблемы в среде с несколькими экземплярами.

Если вы используете несколько экземпляров, вы можете выполнить эту работу следующими способами:

  • чтобы изменить Http Cache на реализацию AppFabric Cache (или некоторую реализацию MemCached)
  • использовать альтернативную стратегию хранения для результатов вашего профиля (например, код включает SqlServerStorage?)

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

person Stuart    schedule 27.07.2011