Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » .NET - Все статьи »

Обсудить на форуме Обсудить на форуме

Выявляем слабые места трехзвенных приложений ASP.NET
Анализатор Web-приложений VTune Enterprise позволяет выявить слабые места трехзвенных приложений ASP.NET.
Для большинства пользователей оптимизация приложений ASP.NET совершенно необходима. Однако процесс оптимизации трехзвенного приложения ASP.NET с кодом, распределенным на нескольких серверах через хранимые процедуры T-SQL, Web Services, COM Interop и/или .NET Remoting, крайне сложен. Приложение VTune Enterprise Analyzer для Web-приложений, разработанное компанией Intel, может снять большую часть проблем путем быстрого обнаружения тех областей приложений, которые требуют как небольшой доработки, так и полного перепрограммирования на системном уровне.

 

Начну с того, что VTune - анализатор самого последнего поколения. Его называют "Enterprise Analyzer" из-за того, что он позволяет проводить высокоэффективный анализ каждого яруса Web-приложения с классической трехъярусной архитектурой - яруса Web, приложения или объектного яруса или базы данных - на собственном сервере. При наличии только двухъярусного Web-приложения от VTune также можно получить массу полезной информации, но цена ее, впрочем, не будет равняться цене установки.

 

Архитектура приложения, которую я использовал для тестирования VTune, является модифицированным вариантом типового Web-приложения Microsoft´s Downhill Bikes. Она включает 4 сервера: основной Web-сервер ASP.NET, сервер SQL, сервер ASP.NET Web Services, а также компьютер, на котором находятся две библиотеки COM DLL с доступом через COM+ proxy. Это - минимальная архитектура стиля "enterprise", предназначенная только для демонстрации того, как VTune отслеживает загрузку множественных серверов, определяет части приложения, выполняемые в заданный момент времени, и суммирует данные рабочих характеристик для этих частей. Стоит отметить, что воздействие на систему во время сбора данных VTune незначительно.

 

Фактически, анализатор VTune Enterprise собран из двух основных компонентов: серверное приложение собирает данные с тестируемых серверов, а приложение GUI обеспечивает начало и конец сбора данных и просмотр результатов. Процедура установки VTune очень проста и не вызывает проблем (по крайней мере, у меня проблем не возникло). Однако следует иметь в виду, что сервер сбора данных и Web-сервер должны быть подключены к одному сетевому концентратору. Поэтому выполнить одновременный анализ нескольких Web-ферм с одного сервера сбора данных на данный момент невозможно.

 

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

 

Первый шаг анализа работы приложений программой VTune не имеет ничего общего с самими программными продуктами. Сначала нужно произвести имитацию большой нагрузки на серверы с помощью таких средств контроля нагрузки, как, например, Mercury Interactive´s LoadRunner или Application Center, включенных в выпуски Enterprise Architect и Enterprise Developer от Visual Studio .NET. Бесплатным альтернативным решением является Microsoft´s Web Application Stress Tool, который, возможно, отлажен не до конца, но работает неплохо.

Просмотр ярусов (Tier View)

После создания скрипта контроля загрузки можно запускать VTune. Сначала создайте новый проект и сконфигурируйте сервер сбора данных для тестирования всех серверов приложения (см. рис. 1).

Рис. 1. Для установки параметров тестирования нужно лишь указать имена серверов - поставить несколько флажков в соответствующих полях.

 

На данном этапе необходимо запустить программу тестирования для имитации реальной нагрузки, после чего запустить процесс сбора данных с приложения VTune´s GUI. Время работы этого приложения не ограничено; сервер сбора данных можно в любой момент остановить.

 

Просмотр результатов тестирования осуществляется несколькими способами: по ярусу, по компьютеру, по объекту или по задаче. При просмотре яруса отображается диаграмма всего процесса тестирования, а также время отклика каждого яруса приложения (см. рис. 2). Таким образом предоставляется полная и точная информация о работе каждого яруса во время тестирования, что позволяет обнаружить области, требующие дополнительного анализа.

Рис. 2. Вид Tier View в VTune обеспечивает наглядное представление о работе ярусов приложения.

 

Единственным недостатком диаграмм VTune, не позволяющих назвать их полностью интуитивными, является отсутствие (за некоторыми исключениями) контекстных меню. Например, при нажатии левой клавиши мыши можно перетащить в нужно место выделенный временной отрезок диаграммы. Я один раз попробовал: выделил все, как должно, и понадеялся на то, что при нажатии правой клавиши мыши появится меню со всеми доступными опциями. Этого не произошло, и мне пришлось довольно долго изучать справку - для того чтобы выяснить, что для увеличения отображения выделенной области было достаточно нажать кнопку Time Filter на панели инструментов. Да и потом, при всей почти безусловной полезности Tier View, в какой-то момент возникает желание получить с его помощью немного больше информации, нежели было доступно (например, узнать о действиях, выполняемых при выделении части диаграммы или по мере подведения к ней курсора).

Просмотр компьютеров (Machine View), задач (Task View) и объектов (Object View)

Вид "Machine View" (см. рис. 3) обеспечивает более глубокое понимание работы приложения, нежели просмотр отдельных ярусов. Согласно своему названию, вид "Machine View" позволяет просматривать рабочие характеристики и реакцию на нагрузку каждого физического сервера. Ярусы можно фильтровать и просматривать одновременно, а также выбирать атрибуты сервера для включения их в диаграмму (например, можно выбрать такие характеристики, как загруженность CPU, использование физической и виртуальной памяти, I/O диска, занятие полосы пропускания сети и время отклика).

Рис. 3. В Machine View показана работа каждого сервера, задействованного в тестировании.

 

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

 

Наряду с Tier View и Machine View, два других рассматриваемых вида по всем показателям являются теми областями, где возможности VTune проявляются в полной мере, и где разработчики ASP.NET добились максимальных результатов, несмотря на затраченные время, деньги и усилия. Начиная с Task View (см. рис. 4), в VTune отражается информация, которая знакома любому программисту-разработчику: запросы URL, методы вызовов и вызовы баз данных. Эти типы вызовов отображаются непосредственно в физических ярусах трехъярусной архитектуры приложений.

Рис. 4. В Task View представлена подробная информация по запросам ASP.NET и SQL, а также по методам вызовов.

 

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

 

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

 

Одним упущением в разработке Task View, с которым я столкнулся, была невозможность как сохранения, так и экспорта данных в другой формат. Это довольно странно, поскольку в меню File имеется как строка Export, так и команда Save As, однако они всегда недоступны (хотя должны быть активными). В справке по VTune говорится о том, что эти функции должны работать, однако, программа этого не учитывает. И, наконец, продукту абсолютно не хватает зависимой от контекста интеграции между различными видами просмотра - кажется, что последние представляют скорее отдельные блоки несвязанных между собой данных, а не являются просто различными способами просмотра одной и той же информации.

 

Task View позволяет просматривать полные данные по работе приложения в виде таблицы, тогда как Object View предоставляет подробную информацию по всей архитектуре. На рис. 5 видно, что Object View отображает поток выполнения для всех ярусов, серверов и объектов. Основное назначение данного вида просмотра - продемонстрировать работу всех компонентов вместе, а не то, как они работают. Идея хороша, но (более чем вероятно) если вам уже приходилось заниматься построением трехъярусной архитектуры, то похожая диаграмма - и, возможно, даже более подробная - у вас уже имеется.

Рис. 5. Object View отображает взаимосвязи между ярусами, серверами и объектами.

Эффективное использование VTune

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

Используйте Object View, чтобы убедиться в своем полном понимании архитектуры приложения перед началом анализа результатов его работы. Это поможет избежать массы неприятностей.

 

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

 

Используйте Machine View для определения того, не снижается ли производительность из-за сбоев Web-сервера или сервера приложений. Может случиться так, что серверу баз данных просто необходима дополнительная память или процессоры. Не тратьте время на анализ кодов, когда на самом деле необходимо обновлять "железо". Эта информация поможет определить дальнейшие необходимые действия. В этих случаях полезно соотнести стоимость VTune с затратами на (возможно) не совсем правильное обновление аппаратного обеспечения, включая затраты на консультантов и т.д.

 

Не забывайте просматривать информацию о кодах с высокими показателями нагрузки в Task View. Из-за того, что нагрузка рассчитывается как производное среднего времени отклика и количества событий, понижение этого значения может привести к возникновению новых проблем. Может получиться так, что код нельзя оптимизировать на более быстрое выполнение. Но, если имеется возможность снижения количества раз выполнения кода, тогда на данном отрезке производительность можно заметно повысить.

 

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

 

VTune Enterprise Analyzer для Web-приложений от Intel может стать бесценным инструментом при тестировании приложения c трехъярусной архитектурой, направленным на повышение производительности, на этапе разработки (а не на этапе последующего использования данного приложения). VTune можно с успехом применять в средах разработки в качестве диагностического инструмента для выявления "неявных" проблем, хотя Intel не предполагала их для использования в таком качестве.

 

Основной для построения мощных приложений с трехъярусной архитектурой является .NET Framework. Однако даже здесь задача построения такой архитектуры может быть довольно трудной, а Visual Studio .NET пока не позволяет создавать полностью оптимизированные системы. VTune Enterprise Analyzer предназначен для заполнения именно этого пробела и, при правильном использовании, помогает достичь максимальной эффективности приложений.

 

Кен Мак-Нейми (Ken McNamee) - старший инженер по разработке ПО корпорации RelayHealth Corp. - ведущего провайдера безопасных Web-решений. Ранее он возглавлял группу разработчиков, занимавшихся переводом сайта Home Shopping Network´s e-commerce, HSN.com на 100% ASP.NET с использованием C#. Контактный адрес электронной почты: mailto:kenmcnamee@hotmail.com.

asp:factfile

VTune Enterprise Analyzer для Web-приложений - инструмент диагностирования производительности трехъярусных Web-архитектур.

  • Подробная информация о производительности ASP.NET по времени отклика, вызовам баз данных серверов SQL, а также вызовам DCOM, Web Services и .NET Remoting.
  • Необходимо: Windows 2000 с SP2 или более поздней версии.
  • Необходимо: SQL Server 2000 на ярусе базы данных.
  • Можно использовать с приложениями Windows DNA или .NET Web.
  • Простая установка с подробными инструкциями.
  • Включены: четыре лицензии на VTune Performance Analyzer 6.0 (стоимостью $700 каждая).

Intel Corp.
2200 Mission College Blvd.
Santa Clara, Calif. 95052


Может пригодится:


Автор: Кен Мак-Нейми
Прочитано: 9205
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (0)

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру