Служба поддержки: Как узнать, чем на самом деле занимается ваше Web-приложение

Применение средств мониторинга и диагностики IBM для Java – Health Center

IBM® Monitoring and Diagnostic Tools for Java™ – Health Center представляет собой простой в обращении инструмент, который наблюдает за виртуальными машинами Java IBM с минимальным ущербом для производительности. Он предоставляет актуальную информацию и рекомендации по загружаемым классам, среде виртуальной машины, сбору мусора, блокировкам и профилям. Данная статья знакомит читателя с системой Health Center и демонстрирует, как ее можно использовать для проверки последствий внесения изменений в исходный код Web-приложения. Из журнала IBM WebSphere Developer Technical Journal.

Д-р Холли Камминз, инженер-программист, EMC

Холли Камминз (Holly Cummins) занимается разработкой инструментария для повышения производительности в Центре технологии Java IBM. Возглавляет проект IBM Monitoring and Diagnostic Tools for Java ― Health Center и является автором инструмента CG and Memory Visualizer. В своей работе над инструментами опирается на опыт работы инженером по повышению производительности в команде разработчиков сборщика мусора для Java.



Элен Бикен, программист, IBM

Д-р Элен Бикен (Helen Beeken) - программист, разрабатывающий инструментарий RAS в IBM Java Technology Centre. До присоединения к нынешней команде она работала в проектах с открытым кодом AspectJ и AJDT Eclipse и участвовала в нагрузочном тестировании больших ИТ-систем.



Тоби Корбин, программист, IBM

Тоби Корбин (Toby Corbin) - программист, в настоящее время разрабатывает инструментарий RAS в IBM Java Technology Centre. Он поступил на работу в IBM в 2001 году и четыре года занимался разработкой поддержки национальных языков и глобализации для Java Runtime Environment, а затем два года вел разработку библиотек Swing и AWT.



Райт Рассел, WebSphere Serviceability Development, IBM

Рассел Райт (Russell Wright) имеет многолетний опыт разработки и поддержки приложений для обмена данными и программного обеспечения промежуточного уровня, в том числе WebSphere Application Server. В настоящее время руководит развертыванием инструментальных средств обнаружения проблем для IBM Support Assistant и разработкой IBM Guided Activity Assistant.



19.12.2012

В каждой колонке "Службы поддержки" обсуждаются ресурсы, инструменты и другие элементы технической поддержки IBM® для продуктов WebSphere®, а также новые методы и идеи, способствующие накоплению опыта в области поддержки продуктов IBM.

Предисловие

Как всегда, начнем с новостей, представляющих интерес для широкого сообщества WebSphere:

  • Готовы ли вы к мероприятию IMPACT 2010? Зарегистрируйтесь заранее и сэкономьте на регистрационных взносах и стоимости размещения в гостинице. IMPACT-2010 – это первая конференция для руководителей предприятий и ИТ-подразделений. Присоединяйтесь к нам в Лас-Вегасе со 2 по 7 мая и научитесь работать рациональнее у самых опытных в мире руководителей предприятий и ИТ-подразделений.
  • Новые и модернизированные инструменты для IBM Support Assistant: См. полный список новых диагностических инструментов для IBM Support Assistant.
  • Вы еще не пробовали IBM Support Portal? Тогда сделайте это сейчас, потому что в январе 2010 года страницы поддержки программного обеспечения IBM будут заменены порталом поддержки IBM. Теперь все продукты IBM Software включены в IBM Support Portal. Подробности см. в статье Знакомство с Порталом поддержки IBM в "Службе поддержки". Обязательно дайте нам знать, что вы думаете, направив свои комментарии и предложения по адресу: spe@us.ibm.com.
  • Новинка! Теперь можно использовать Мои уведомления, чтобы быть в курсе доступных исправлений. Выполните следующие шаги для обновления своей подписки:
    • Нажмите Мои уведомления, чтобы управлять своими подписками.
    • Выберите семейство продуктов (например, WebSphere).
    • Отметьте один или несколько продуктов и нажмите Продолжить.
    • Отметьте Исправления в разделе "Типы документов" и нажмите Отправить.
    Вот и все! Теперь вы будете получать уведомления всякий раз при появлении исправлений для выбранных продуктов.
  • Глобальное сообщество пользователей WebSphere.org продолжает расти! Вот две новые виртуальные группы пользователей, где можно сотрудничать с другими "Web-сферянами" со всего мира:
  • Вы пользуетесь продуктами для управления бизнес-процессами (BPM)? Если да, то познакомьтесь с анонсом BPM V7.0.
  • В ноябре планируется несколько интересных Web-трансляций в разделе WebSphere Technical Exchange. Узнайте детали на сайте и станьте фанатом Facebook!

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

А теперь перейдем к нашей основной теме...


Введение

IBM Monitoring and Diagnostic Tools for Java – Health Center – это новое дополнение к набору диагностических инструментов Java IBM. Этот инструмент представляет собой интегрированное решение для обнаружения и диагностики проблем производительности, емкости и стабильности в Java-приложениях.

Health Center может контролировать любое приложение, работающее на виртуальной машине Java (JVM) IBM, включая IBM WebSphere Application Server и другие продукты, относящиеся к WebSphere. Он поддерживает полный спектр платформ, включая z/OS®, AIX®, Linux® и Windows®.

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

Рисунок 1. Окно состояния
Рисунок 1. Окно состояния

Если для оптимизации производительности используется инфраструктура мониторинга производительности (PMI) WebSphere Application Server, то некоторые данные (например, об использовании "кучи") будут представлены как в PMI, так и в Health Center. Однако существуют важные различия, знание которых поможет вам определить, в каких случаях использовать каждый инструмент.

Health Center отличается от PMI тем, что он ориентирован на Java и не включает в себя параметры более высокого уровня или параметры, специфические для Web-приложения, такие как время отклика HTTP и число запросов сервлета. Вместо этого он предоставляет очень подробную информацию по Java, значительную часть которой взять больше неоткуда. Она включает в себя профили методов, которые чрезвычайно полезны при выявлении неэффективного кода или излишних вызовов. Health Center выполняет также анализ блокировок для выявления узких мест синхронизации и отображает картину сбора мусора, которая может помочь, когда сбор мусора становится причиной замедления работы приложения.


Установка Health Center

Для агента Health Center требуется минимальный уровень Java 1.5 SR8 или 1.6 SR2. IBM WebSphere Application Server V7.0 поставляется с версией Java, которая поддерживает Health Center по умолчанию; WebSphere Application Server V6.1 нужно обновить, установив пакета исправлений SDK по крайней мере до Java 1.5 SR8.

Прежде чем использовать Health Center, необходимо настроить систему мониторинга.

  1. Установите агент и клиент Health Center.
  2. Настройте WebSphere Application Server для мониторинга.
  3. Соедините клиент Health Center с Java-приложением.

Инструмент Health Center состоит из двух частей:

  • агента, который, который передает информацию из контролируемой JVM клиенту;
  • и клиента, который соединяется с агентом и отображает информацию о состоянии Java-приложения.

Прежде чем приложение можно будет контролировать, на JVM, которую оно использует, нужно установить агент Health Center, и запустить это приложение командной строкой со специальными параметрами. Версии JVM 1.5 SR9, 1.6 SR3 и более поздние версии поставляются с агентом по умолчанию. Более ранние JVM можно обновить с помощью агента, присутствующего в клиенте.

Клиент Health Center ― это инструментальное дополнение IBM Support Assistant. Чтобы установить клиент, следуйте инструкциям по установке и работе с инструментами IBM Support Assistant. В ответ на вопрос о запускаемом или устанавливаемом инструменте выберите IBM Monitoring and Diagnostic Tools for Java – Health Center.

Когда клиент установлен, можно выгрузить агент из этого клиента и установить его в JVM, которую нужно контролировать. Даже при использовании JVM, которая поставляется с агентом Health Center, загрузите последнюю версию агента, чтобы он содержал последние обновления и исправления. Для этого выберите ссылку Enabling an application for monitoring на первой странице мастера подключения (рисунок 2). Справочная система IBM Support Assistant откроет страницу, содержащую ссылки на загружаемые агенты Health Center (рис. 3).

Рисунок 2. Мастер подключения Health Center
Рисунок 2. Мастер подключения Health Center
Рисунок 3. Агенты Health Center
Рисунок 3. Агенты Health Center

Загрузите агент для своей платформы и распакуйте его в корневой каталог целевой JVM. Например, в типичной среде Linux распакуйте агент в /opt/ibm/WebSphere/AppServer/java.


Настройка WebSphere Application Server для мониторинга

Для того чтобы Health Center контролировал WebSphere Application Server и ваши приложения, настройте конфигурацию JVM с помощью консоли администратора.

  1. Запустите консоль администратора.
  2. Выберите Servers => Application Servers.
  3. Выберите сервер, который нужно контролировать.
  4. Прокрутите экран вниз до раздела Sever Infrastructure (рисунок 4).
    Рисунок 4. Консоль администратора: серверная инфраструктура
    Рисунок 4. Консоль администратора: серверная инфраструктура
  5. Разверните Java and Process Management.
  6. Нажмите на Process Definition.
  7. На вновь открывшейся странице перейдите в раздел Additional Properties и нажмите Java Virtual Machine (рисунок 5).
    Рисунок 5. Консоль администратора: Additional Properties
    Рисунок 5. Консоль администратора: Additional Properties
  8. Прокрутите страницу вниз до поля аргументов Generic JVM и добавьте следующие аргументы (рис. 6):
    -agentlib:healthcenter -Xtrace:output=perfmon.%p.out
    Рисунок 6. Добавление аргументов в поле JVM Arguments
    Рисунок 6. Добавление аргументов в поле JVM Arguments
  9. Сохраните настройки и перезагрузите сервер приложений.

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


Настройка среды разработки для мониторинга

После установки агента Health Center и обновления конфигурации WebSphere Application Server можно приступать к мониторингу. Для мониторинга приложения выполните следующие действия.

  1. Запустите рабочую среду IBM Support Assistant.
  2. На главной странице выберите вкладку Analyze Problem.
  3. Выберите из каталога инструментов IBM Monitoring and Diagnostic Tools for Java – Health Center и нажмите кнопку Launch (рисунок 7).
    Рисунок 7. Запуск Health Center
    Рисунок 7. Запуск Health Center
  4. Откроется Connection Wizard (рисунок 8). Нажмите Next.
    Рисунок 8. Connection Wizard
    Рисунок 8. Connection Wizard
  5. На панели JVM Connection Details (рисунок 9) укажите имя хоста, к которому нужно подключиться, и примите номер порта по умолчанию. Нажмите Next, чтобы начать поиск портов, прослушиваемых агентами Health Center. По умолчанию система начинает поиск с порта 1972 и сканирует следующие 100 портов, чтобы выявить все прослушивающие агенты. Если порт нужного агента уже известен, можно ввести этот номер и снять флажок Scan next 100 ports for available connections. Если между клиентом и агентами установлен межсетевой экран, не забудьте открыть необходимые порты.
    Рисунок 9. Подробная информация о соединениях JVM
    Рисунок 9. Подробная информация о соединениях JVM
  6. Когда поиск завершится, в последнем окне мастера будут показаны доступные соединения агентов (рисунок 10). Выберите порт из списка и нажмите Finish.
    Рисунок 10. Заключительный экран мастера подключения
    Рисунок 10. Заключительный экран мастера подключения

Что на самом деле делает WebSphere-приложение?

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

Чтобы продемонстрировать, как использовать Health Center для решения этих задач, рассмотрим пример Web-приложения Plants By WebSphere. Проследим, как небольшое изменение в приложении может оказать значительное влияние на производительность.

Изменение, внесенное в приложение Plants By WebSphere, состояло в добавлении элемента динамического контента на Web-страницу; в частности, к имени каждого из растений, которые отображаются на странице, был добавлен текущий год. В поддерживающей базе данных никаких изменений внесено не было, ― только в код, который возвращает имя: Inventory.getName(). Затем текущий год преобразуется в объект типа Date, форматируется как строка и анализируется с помощью регулярного выражения. Результат этих изменений показан на рисунке 11.

Рисунок 11. Модернизированное приложение Plants By WebSphere
Рисунок 11. Модернизированное приложение Plants By WebSphere

Теперь воспользуемся Health Center, чтобы увидеть влияние этих изменений.

  • Как изменения повлияли на сбор мусора?

    Каково влияние этих изменений на производительность? Чтобы узнать это, первым делом нужно проверить сбор мусора. На представлении Garbage Collection Health Center демонстрирует графики операций по сбору мусора, статистику GC и рекомендации (рисунок 12).

    Рисунок 12. Представление Garbage Collection
    Рисунок 12. Представление Garbage Collection

    Из графиков на рисунке 12 следует, что паузы GC не слишком продолжительны, но, кажется, наблюдается некоторый избыток деятельности GK. В этом можно убедиться, глядя на резюме, которое показывает, что 6,2% времени приложение тратит на сбор мусора. Хотя 6,2% накладных расходов на GC ― не так уж много, это значительно больше, чем 2,6%, демонстрируемые исходным приложением (рис. 13). Интенсивность создания мусора также в шесть раз выше, так что новое приложение производит гораздо больше мусора.

    Рисунок 13. Сводная таблица по сбору мусора оригинального приложения
    Рисунок 13. Сводная таблица по сбору мусора для оригинального приложения
  • Как изменение влияет на эффективность исполнения?

    Теперь проверим долю потребляемых ресурсов процессора с использованием объекта Date. Эффективно ли он работает? Ответить на этот вопрос поможет представление Profiling Health Center. Иногда в профиле может доминировать код сервера приложений WebSphere, и тогда трудно найти код своего приложения. Чтобы увидеть только свой код, можно воспользоваться возможностями фильтрации (рисунок 14). Используем регулярные выражения для усложненной фильтрации (в начало и конец строки фильтра всегда добавляется звездочка (*), поэтому нет необходимости вводить шаблоны для простых строк). В этом примере в качестве фильтра используется plant, так что профилируются только методы Plants By WebSphere.

    Рисунок 14. Использование возможностей фильтрации для представления Profiling
    Рисунок 14. Использование возможностей фильтрации для представления Profiling

    Представление Profiling Health Center дает профиль методов, собранный путем регулярной выборки из исполняемого кода. В данном случае (рисунок 15) столбец Self(%) показывает, что 3,2% процессорного времени тратится на Date.ToString(). Стобец Tree(%) показывает общее количество процессорного времени (40.6%), расходуемого на Date.ToString() и все методы, которые вызывает эта функция. Date.toString() несет ответственность более чем за 40% процессорного времени, используемого приложением.

    Рисунок 15. Профиль метода
    Рисунок 15. Профиль метода

    Представление путей вызова (рисунок 16) показывает, какой код вызывает Date.ToString(). В данном случае 100% вызовов приходят из измененного метода Inventory.GetName().

    Рисунок 16. Пути вызова Date.toString()
    Рисунок 16. Пути вызова Date.toString()

    Очевидно, что форматирование дат в виде строки накладно. Если бы здесь нужно было повысить производительность, можно было бы кэшировать строки вместо их воссоздания для каждого элемента каталога. Профиль (рисунок 15) показывает также, что довольно много времени тратится на обработку регулярных выражений, так что следовало бы также кэшировать результатов разбора. Еще лучше использовать метод выработки даты, исключающий создание дополнительных строк и сопоставление регулярных выражений, такой как Calendar.get(Calendar.YEAR).

  • Как выполняется синхронизация?

    Изменение кода в этом примере не связано ни с какой синхронизацией, так что нет никаких проблем с поведением блокировок приложения. Поэтому маловероятно, что в данном примере синхронизация окажет значительное влияние на производительность (рис. 17).

    Рисунок 17. Представление блокировок
    Рисунок 17. Представление блокировок
  • С какой конфигурацией работает приложение?

    Представление Health Center Environment(рисунок 18) показывает конфигурацию Java, свойства системы и переменные среды контролируемого процесса. Это может быть полезно для проверки, та ли JVM контролируется и с теми ли конфигурациями работают приложения WebSphere.

    Рисунок 18. Представление Environment
    Рисунок 18. Представление Environment

Заключение

Инструментарий мониторинга и диагностических IBM для Java – Health Center позволяет постоянно контролировать производительность и поведение сервера приложений WebSphere Application без значительных накладных расходов. Он помогает легко и наглядно определять и диагностировать проблемы производительности, конфигурации и синхронизации.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=WebSphere, Технология Java
ArticleID=852707
ArticleTitle=Служба поддержки: Как узнать, чем на самом деле занимается ваше Web-приложение
publish-date=12192012