Symantec i3:принципы управления производительностью прикладных систем

I. Назначение i3

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

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

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

Объект контроля и управления - многоуровневые прикладные системы. Имеются в виду системы, осуществляющие сквозное выполнение транзакций, включающие базы данных (такие, как Oracle и MS SQL), серверы приложений (в том числе на базе технологий J2EE и .NET), распространенные WEB-серверы и пр. Существуют специально сформированные комплексные решения i3 для многоуровневых приложений - таких, как SAP, Oracle EBS и некоторых других.

Особая ценность i3 состоит в умении эффективно работать именно с многоуровневыми приложениями и быстро идентифицировать проблемные уровни с последующей концентрацией усилий на конкретном модуле объектной системы. Однако применение i3 будет иметь очень высокую эффективность и при управлении производительностью отдельных компонент, особенно если речь идет о СУБД Oracle, MS SQL, Sybase ASE, DB2 UDB, или при частичным охвате комплексных систем.

Гораздо больше, чем мониторинг. Часто основную функциональность i3 обозначают словом "мониторинг", что является источником путаницы. Дело в том, что на практике понятие "мониторинг" в представлении многих специалистов и руководителей оказалось практически синонимом функциональности таких систем, как HP OpenView или IBM Tivoly. На самом деле существующая область пересечения задач i3 с областью применения подобных систем не является самым главным звеном в той цепи функций и методик, которая образует понятие "Управление производительностью".

Иллюстрацией этого является, например, тот факт, в одной из крупнейших корпораций США HP OpenView используется для комплексного оперативного мониторинга, а i3 - для анализа вопросов производительности прикладной системы. Ее ИТ - руководители полагают, что это совершенно разные задачи, назначив для их решения отдельные группы специалистов.

Центральная задача i3 - быстрая диагностика. Причем оба слова: и "быстрая", и "диагностика", имеют содержание, требующее пояснений.

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

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

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

II. Методология i3: диагностика в проекции на прошлое и будущее

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

Диагностика может быть реактивной (анализ произошедших событий), предупредительной (индикация и выявление причин нарастающих потенциальных проблем, действие "на фронтальном участке" надвигающейся волны негативных явлений) и профилактической (когда негативные тенденции обнаруживаются задолго до проявления реальных проблем и диагностируются их причины).

Одним из видов диагностики, сфокусированной на будущее, является "Capacity Planning" (термин, обозначающий планирование ресурсов, задействованных прикладной системой). Речь идет об автоматически выполняемом системой i3 прогнозировании ресурсов, потребляемых объектной системой, или о предоставлении обширной информации, которая может быть использована для подобных прогнозов. Этот вид профилактической диагностики имеет самостоятельное значение, в частности, поскольку он связан с планированием и обоснованием инвестиций, выделяемых на развитие системы.

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

Достаточно сказать, что более чем в половине примеров использования i3 на предприятиях США, с которыми нас познакомили сотрудники одного из Северо-Американских офисов Symantec, основной эффект был получен за счет отказа от дорогостоящего повышения мощности компьютерного оборудования. Т.е. выявление точных причин проблем с производительностью прикладных систем позволяло устранить их "малой кровью", а средства, сэкономленные на приобретении техники "high end" (а также связанных с ними дополнительных лицензий на сами прикладные системы, СУБД, прочие системные компоненты и их поддержку) многократно покрывали издержки на приобретение или аренду средств i3.

III. Диагностика средствами i3 и выработка рекомендаций

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

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

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

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

Управление производительностью, таким образом, распадается на управление источниками нагрузки и управление ресурсами.

Управление источниками нагрузки включает в себя управление пользователями и задачами - в том числе административное. Например, можно запретить (определенным пользователям) запускать ресурсоемкие задачи в часы пиковых нагрузок. Такое управление может включать рекомендацию оптимизировать задачу (текст программы), SQL запрос, перестроить структуру базы или еще каким-то образом сократить потребление ресурсов.

Управление ресурсами включает в себя управление процессорной мощностью (рекомендация увеличить число процессоров или их мощность), быстродействием дисковой подсистемы, памятью (рекомендация увеличить объем памяти, тем самым, например, расширив возможности кеширования), быстродействием сетевых средств.

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

Так, например, аналитик, ответственный за управление производительностью, получив с помощью i3 данные о том, что основной причиной замедления выполнения транзакций являются чрезмерные затраты на ввод-вывод в наиболее ресурсоемких запросах к базе данных, может сформулировать спектр рекомендаций, выполнение которых имеет разные уровни стоимости и эффективности:

Источники нагрузки

  • настройка самих запросов (построение индексов, реорганизация запросов),
  • более рациональное размещение объектов базы данных на устройствах хранения,
  • реорганизация структуры базы данных с соответствующими изменениями в прикладном коде

Ресурсы

  • настройка системы хранения данных (методов организации хранения и доступа),
  • приобретение более быстродействующей дисковой системы,
  • увеличение объема оперативной памяти, и пр.

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

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

IV. Ресурсные вычисления ("utility computing") и диагностика

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

Служба ИТ при этом выступает в качестве поставщика определенных услуг, а уровень качества обслуживания заказчиков (клиентов) регламентируется соответствующим Соглашением об Уровне Обслуживания (Service Level Agreement, SLA).

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

Известно, что на поиск причин снижения производительности тратится обычно 80% времени, и только 20% - на их устранение. Поэтому обеспечение быстрой идентификации таких причин (аппаратная часть, программа, клиентская машина или пользователь), которые ответственны за снижение производительности, и раскрытие всех деталей, необходимых для решения проблемы, является одной из важнейших функций системы i3.

Система Symantec i3, имеющая полный и эффективный набор инструментов для диагностики, позволяет придать регламентный характер процедурам диагностики, прогнозирования и устранения проблем с производительностью прикладных систем, что позволяет реализовать управляемый и предсказуемый процесс устранения отклонений от требований SLA, обозначаемый как "управление производительностью".

V. Бизнес - аспекты использования i3

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

Такой подход может привести к значительному перерасходу средств со стороны заказчика, поскольку его возможности по проверке реально необходимого уровня аппаратного обеспечения крайне ограничены. Излишнее число процессоров не только нелинейно наращивает стоимость саму по себе, но имеет эффект "снежного кома": возрастает стоимость лицензий прикладной системы, СУБД, затраты на поддержку и пр.

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

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

i3 предоставляет возможность поиска эффективных решений проблем с производительностью без наращивания мощности аппаратной платформы.

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

VI. Организационные особенности использования i3

Сама по себе установка i3, без определения бизнес-процедур управления производительностью, проблем не решает. Управление производительностью может осуществлять определенная функциональная структура, имеющая конкретные (ежедневные) задачи, регламентированные внутренние бизнес-процессы и процедуры взаимодействия с другими функциональными подразделениями. Ниже приведен возможный перечень подобных задач, связанных с различными уровнями управления и ответственности департамента ИТ. Система i3 позволяет:

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

На уровне среднего руководящего звена: осуществлять анализ причин возникающих отклонений на основе комплексной, объективной и достоверной информации, что исключает взаимное "перекладывание" ответственности разными службами (как известно, наиболее сложные в решении проблемы возникают "на стыке" зон ответственности подразделений и групп специалистов). Достоверная диагностика и принятие адекватных, в т.ч. организационных, мер позволяют избегать повторного возникновения однотипных проблем.

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

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

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

VII. Краткое описание архитектуры системы Symantec i3

Рис. 1. Схематичное представление типичной архитектуры многоуровневой прикладной системы
 
Рис. 2. Архитектура решения Symantec i3.

На рисунках 1 и 2 схематично представлена архитектура многоуровневой прикладной системы ("целевая система") и соответствующая ей архитектура системы Symantec i3.

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

Информация, накапливаемая в хранилище, доступна всем трем основным подсистемам i3: модулям "Insight", "Inform" и "Indepth". Наличие центрального хранилища данных о производительности позволяет осуществлять статистический анализ на всех этапах проведения диагностики, а также выполнять "обратное прослеживание" работы объектной системы.

Модуль "Insight" сегментирует время реакции целевой системы между уровнями архитектуры, а также представляет дополнительную информацию, позволяющую определить общее направление проведения диагностики. С помощью модуля "Insight" можно за несколько секунд определить, где находится причина отклонений, возникших в работе целевой системы: в базе данных, в сервере приложений, или в WEB сервере. Модуль "Insight" может быть использован во многих случаях для выделения затрат даже тех инфраструктурных компонент, которые не поддерживаются системой i3 на уровне контроля их внутренних метрик.

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

Существующие средства i3 позволяют отфильтровывать и строить соответствующие распределения для потоков транзакций, обрабатываемых определенными инфраструктурными элементами.

Подсистема "SmartLink" модуля "Insight" строит распределения затрат по инфраструктурным компонентам, принадлежащих разным уровням архитектуры, для отдельных транзакций.

Рис.3.
Распределение времени реакции системы по инфраструктурным компонентам, представляемое модулем "Insight".

Модуль "Inform" содержит механизмы уведомлений и систему формирования отчетов (в т.ч. графических), предназначенных для статистического анализа параметров прикладной системы, включая анализ тенденций. Его задача - представить в наглядной форме всю необходимую информацию, позволяющую очень быстро разобраться, какая задача, исходящая от какого пользователя, в какой своей части и когда вызвала возникшие отклонения.

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

На рис. 4 представлен один из экранов модуля "Indepth for Oracle", в верхней части которого дана развертка значений загруженности (суммарного времени нахождения запросов в обработке, или, другими словами, потребляемого системой времени) с разбивкой по источникам, а в нижней части - уровни загруженности, создаваемой разными запросами.

Рис.4.
Представление общей загруженности базы данных Oracle во времени и веса отдельных запросов. Хорошо видны недельные циклы загруженности и чрезвычайно высокий удельный вес операций ввода-вывода.

VIII. Вместо заключения: "как стать героем в области производительности и оптимизации"

В очень убедительной брошюре, посвященной модулю i3 "Indepth for Sybase", которую написал Jeffrey Garbus, консультант компании Soaring Eagle Consulting, автор предлагает линию поведения для исполнителя, берущего на себя инициативу по управлению производительностью. Этот очень личный взгляд, не лишенный юмора, тем не менее, иллюстрирующий возможности i3 и методы работы с ним.

Итак, "10 способов стать героем в области производительности и оптимизации" из упомянутой брошюры:

  1. Один или два раза в день взгляните на графическое представление запросов, выполнявшихся в этот день. Если что-то выглядит подозрительно, исследуйте. Затем доложите о решении проблемы прежде, чем вам сообщат о ее наличии. Осуществляйте оптимизацию проактивно.
  2. Определите группу запросов, которые выполняются медленно. Зачастую дело в общих отсутствующих индексах. Был случай, когда добавление единственного индекса уменьшило нагрузку на сервер на 70%.
  3. Определите приложения, которые обычно выполняются долго. Вы можете определить их по графику, на котором производительность выводится в разрезе приложений. Поработайте с разработчиками этих приложений и научите их писать эффективный SQL код.
  4. Анализируйте тенденции производительности системы. Периодически проверяйте статистические сводки и контролируйте производительность отдельных системных характеристик. Находите аномалии, в необходимых случаях производите детальный анализ, и решайте проблемы.
  5. Периодически проверяйте, не приближаются ли потребляемые ресурсы памяти и процессора к предельным значениям. Если загрузка процессора в пиках достигает 80%, по-видимому, необходимо докупать ресурсы.
  6. Проверяйте использование физических ресурсов. Проверяйте тенденции роста данных и использования базы данных. Формируйте предложения о закупках ресурсов заблаговременно, поскольку не всегда в нужный момент существует необходимый бюджет на приобретение.
  7. Детально исследуйте связь тенденций производительности с работой сети. Есть ли частые выбросы на уровне сетевых пакетов? Нередко за этим кроется возможность существенного улучшения производительности на макро-уровне.
  8. Время от времени изменяйте временные интервалы, которые вы контролируете. Если окно, когда выполняются пакетные задания, не влияет на работу транзакционных задач, это еще не значит, что не стоит заработать дополнительные очки в свой актив, показав кому-нибудь, как сделать, чтобы его трехчасовое задание выполнялось за 15 минут. В каких-то случаях это избавит кого-то от стресса.
  9. Научите программистов, разрабатывающих приложения, пользоваться этим инструментом. Он лицензируется на уровне процессоров, а не пользователей. Программисты искренне стремятся сделать свой код более эффективным. Помогите им в этом.
  10. Периодически изменяйте временную перспективу, которую вы охватываете. Возможно, существуют провалы производительности по вторникам после обеда? Как насчет конца месяца? Не стоит ли поменять конфигурацию системы? В конце концов, можно легко проверить, как влияет на производительность изменение кэшей, размеров сетевых пакетов и пр.
  11. (Бонус!) Контролируйте сервер разработчиков, и создавайте индексы, необходимые разработчикам приложений, до того, как они попросят об этом.

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=20629