Служба поддержки: Memory Analyzer (с плагином IBM Extensions) теперь анализирует не только утечки памяти

IBM® Monitoring and Diagnostics for Java - Memory Analyzer® ― это мощный инструмент для диагностики утечек памяти и проблем, связанных с использованием памяти, по дампу процесса Java, такого как IBM WebSphere® Application Server. Кроме того, он выполняет детальный анализ кода Java и позволяет решать некоторые сложные проблемы, исходя только из дампа, без необходимости вставлять диагностический код или перезапускать процесс. В этой статье показано, как использовать Memory Analyzer в сочетании с новым плагином IBM Extensions for Memory Analyzer для изучения состояния как WebSphere Application Server, так и вашего приложения. Из журнала IBM WebSphere Developer Technical Journal.

Крис (Chris) Бейли (Bailey), Advisory Software Engineer, IBM

Крис Бейли (Chris Bailey) начал работать в Центре Технологий Java в IBM после окончания Университета в Саутгемптоне в 2000 году. Он много работает с пользователями над решением проблем, возникающих при работе с технологиями Java, выпущенными IBM, и продуктами, работающими на платформе Java. Крис является координатором форума разработчиков, под названием "Среда выполнения IBM Java и SDK" и в данный момент сосредоточил внимание на улучшении качества информации и инструментальных средств, доступных пользователям платформы Java от IBM.



Кевин Григоренко, группа WebSphere Application Server SWAT, IBM

Фото автораКевин Григоренко (Kevin Grigorenko) работает инженером-программистом в группе WebSphere Application Server SWAT, которая обеспечивает всемирную поддержку программных продуктов, на месте и дистанционно, в частности, в критических для заказчика ситуациях. Он специализируется на выявлении проблем WebSphere Application Server и связанных с ним продуктов и операционных систем, в том числе IBM и Oracle JVM, AIX, Linux, Solaris, Windows, z/OS, HP/UX и i5/OS.



Махеш Рати, группа WebSphere Application Server SWAT, IBM

Доктор Махеш Рати (Dr. Mahesh Rathi) работает с WebSphere Application Server с момента его создания. Возглавлял группу разработки средств безопасности, затем присоединился к группе Support L2, а в 2005 году ― к группе SWAT. Ему очень нравится работать с требовательными клиентами, решать актуальные проблемы и находить выход из критических ситуаций. До прихода в IBM получил докторскую степень по вычислительной технике в Университете Пердью и преподавал разработку программного обеспечения в Уичитском университете штата Канзас.



16.04.2012

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

Для начала…

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

  • Готовы ли вы к конференции Impact-2011? Присоединяйтесь к нам на конференции Impact-2011, которая будет проходить с 10 по 15 апреля 2011 года в Лас-Вегасе, штат Невада, в отелях The Venetian и The Palazzo. Вот пять главных доводов в пользу участия в Impact (PDF, 115 КБ), единой конференции для руководителей производственных и ИТ-подразделений, где они могут вместе решить, как добиться повышенной гибкости бизнеса.
  • Просмотрите список предстоящих конференций на странице IBM Conferences and Events.
  • Учитесь, обменивайтесь опытом и общайтесь в блоге сообщества IBM Electronic Support портала developerWorks.
  • Новое международное сообщество пользователей Global WebSphere Community (GWC) находится по адресу: websphereusergroup.org. Настройте содержание своей персональной страницы GWC и установите связь с другими "Web-сферянами", разделяющими ваши интересы. GWC предлагает также бесплатные учебные курсы по IBM WebSphere CloudBurst Appliance™ Appliance. Научитесь настраивать ресурсы, управляемые в облаке, создавать виртуальные системы для развертывания в облаке, управлять ресурсами, развернутыми в облаке, а также создавать несколько шаблонов образов и управлять динамическими машинами.
  • В ближайшие месяцы планируется несколько интересных Web-трансляций в разделе WebSphere Technical Exchange. Узнайте детали на Facebook и станьте нашим фанатом!
  • Вышла версия IBM Support Assistant 4.1.2. В IBM Support Assistant 4.1.2 исправлены несколько ошибок и содержится новая версия инструмента быстрого сбора данных ISA Lite. В число новых возможностей ISA Lite входят:
    • возможность легко просматривать данные, собранные в ISA Lite, в Web-браузере;
    • поддержка Ant 1.8;
    • пронумерованные пункты меню;
    • возможность приостанавливать обработку файла ответа в различных сценариях;
    • расширяемый формат, использующий пары имя-значение для файла ответа, позволяет добавлять комментарии в файл ответа. Пары имя-значение в файле ответа охватывают все соответствующие вопросы, и его легко редактировать в целях настройки системы;
    • информация о версии автоматически выводится на консоль и в журнал при запуске;
    • параметр -help позволяет просматривать информацию о том, как пользоваться инструментом;
    • альтернативные способы передачи файлов;
    • визуальный индикатор, который показывает, успешно ли закончилась операция сбора данных;
    • параметр -UseHome предотвращает запись файлов в каталог установки ISA Lite;
    • поддержка Windows® 7 и 64-бит Linux® RedHat;
    • поддержка сбора данных для Solaris.

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

А теперь ― наша главная тема…


Отладка по дампам

В параллельной статье IBM developerWorks об отладке по дампам мы рассказали о подходе использования инструмента мониторинга и диагностики IBM Monitoring and Diagnostics for Java - Memory Analyzer (далее ― Memory Analyzer) в сочетании с двоичным HPROF-дампом, полученным в среде выполнения Java на базе HotSpot (Solaris™ и HP-UX), или системным дампом в среде выполнения IBM Java для решения проблем, не связанных с утечкой памяти. В той статье говорится о важности использования дампов этого типа (в отличие от IBM Portable Heap Dump), о том, как получить дампы и как их использовать для диагностики разнообразных проблем, включая проблемы, связанные с занимаемым объемом и эффективностью использования памяти, а также проблемы иерархии загрузчиков классов, использования потоковых данных и анализа исключений.

Настоящая статья посвящена тому, как разрешить и сгенерировать HPROF-дампы и системные дампы IBM в IBM WebSphere Application Server и как использовать Memory Analyzer с новым плагином IBM Extensions for Memory Analyzer для определения состояния своей среды WebSphere Application и диагностики некоторых проблем, специфических для WebSphere Application Server.


Создание дампов в WebSphere Application Server

Чтобы использовать всю мощь Memory Analyzer, важно сгенерировать дампы формата HPROF (при использовании Java Runtime на основе HotSpot) или дампы системы IBM (при использовании Java Runtime на основе IBM). Дело в том, что эти форматы дампов содержат дополнительные данные, хранящиеся в Java-объектах в куче, которые имеют жизненно важное значение для диагностики проблем, выходящих за рамки утечки памяти, и создания отчетов о состоянии сервера приложений.

HPROF-дампы и системные дампы IBM содержат важную дополнительную информацию, но за это приходится платить дополнительным дисковым пространством. Оба типа дампа системных дампов превышают размер кучи Java, которую они отражают, причем системный дамп IBM эквивалентен по размеру всей памяти, занимаемой процессом Java. Это означает, что важно, чтобы на диске было достаточно места, иначе дампы будут усекаться. По умолчанию, дампы записывается в текущий рабочий каталог процесса Java. В WebSphere Application Server это путь к каталогу профиля сервера, например: WebSphere_Application_Server_Install_Path/profiles/node1. Для среды выполнения IBM Java этот путь можно изменить с помощью параметра командной строки -Xdump. Для среды выполнения Java HotSpot местоположение можно изменить, используя параметр командной строки -XX:HeapDumpPath.

При генерировании системных дампов важно также обеспечить необходимые настройки на уровне операционной системы, чтобы разрешить запись полных дампов. В UNIX®-системах это означает правильную установку значений ulimit. (О том, как получить системные дампы в AIX®, Linux®, z/OS® и Solaris, см. в разделе Ресурсы.)


Создание дампов в среде выполнения Java HotSpot

Среда выполнения Java на основе HotSpot генерирует дамп только в формате HPROF и позволяет делать это в случае исключения OutOfMemoryError или интерактивно с использованием различных методов.

  • Интерактивные методы
    • Использование события Ctrl+Break: если для выполняемого приложения установлен параметр командной строки XX:+HeapDumpOnCtrlBreak, дамп формата HPROF, генерируемый вместе с дампом потока при событии Ctrl+Break, или SIGQUIT (обычно генерируется с помощью kill -3), направляется через консоль. В некоторых версиях этот параметр может быть недоступен; в этом случае попробуйте:

      -Xrunhprof:format=b,file=heapdump.hprof

    • Использование инструмента jmap: инструмент jmap (см. раздел Ресурсы) находится в каталоге bin JDK и предоставляет возможность запросить HPROF-дамп из выполняемого процесса. В Java 5 используйте команду:

      jmap -dump:format=b pid

      В Java 6 используйте следующую команду, где live ― необязательный параметр, который приводит только к тому, что в идентификатор процесса dump-file (PID) записываются объекты live:

      jmap -dump[live,]format=b,file=filename pid

    • Использование операционной системы: для создания файла дампа используйте неразрушающую команду gcore или разрушающие команды kill -6 либо kill -11. Затем извлеките дамп кучи из основного файла, используя команду jmap в применении к основному дампу:

      jmap -dump:format=b,file=heap.hprof path

    • Использование инструмента JConsole: операция DumpHeap осуществляется с помощью HotSpotDiagnostic MBean в JConsole. Эта операция запрашивает создание HPROF-дампа.
  • Метод на основе событий

    Если для выполняемого приложения установлен оператор командной строки XX:+HeapDumpOnOutOfMemoryError, то при событии OutOfMemoryError генерируется дамп в формате HPROF. Это идеально для производственных систем, потому что почти всегда требуется для диагностики проблем памяти и не налагает дополнительной нагрузки на производительность. Количество производимых в этом случае дампов кучи на один прогон JVM не ограничено; в новых версиях при этом событии производится не более одного дампа кучи на прогон JVM.

Для любой рабочей установки WebSphere Application Server полезно установить параметр командной строки XX:+HeapDumpOnOutOfMemoryError.


Создание дампов в WebSphere Application Server

Среда выполнения IBM Java содержит средства для трассировки и создания дампов, которые генерируют дампы в формате PHD или системные дампы в большом количестве интерактивных и основанных на событиях сценариев. Интерактивные дампы можно создавать и с помощью инструмента Health Center или программно с использованием Java API.

  • Интерактивные методы
    • Использование SIGQUIT или Ctrl+Break: Когда в среду выполнения IBM передается событие Ctrl+Break или SIGQUIT (обычно посредством команды kill -3), в механизме дампа IBM генерируется событие пользователя. По умолчанию это событие приводит к созданию файл потокового дампа (javacore.txt). Можно использовать параметр -Xdump:heap:events=user для создания дампа в формате PHD или параметр -Xdump:system:events=user для создания системного дампа Java-приложения.
    • Использование операционной системы для создания системного дампа:
      • AIX: gencore (или деструктивно: kill -6 или kill -11)
      • Linux/Solaris: gcore (или деструктивно: kill -6 или kill -11)
      • Windows: userdump.exe
      • z/OS: SVCDUMP или console dump
    • Использование IBM Monitoring and Diagnostics Tools for Java - Health Center: Инструмент Health Center содержит меню для запроса PHD- или системного дампа из выполняемого процесса Java (см. раздел Ресурсы).
    • Использование клиента сценариев wsadmin: Следующие команды используют команду Jython с параметром с -lang jython (сведения о том, как подключить wsadmin и указать целевой процесс, см. в разделе Ресурсы):
      • Потоковый дамп:

        AdminControl.invoke(AdminControl.completeObjectName("type=JVM,process=server1,*"), "dumpThreads")

      • Системный дамп:

        AdminControl.invoke(AdminControl.completeObjectName("type=JVM,process=server1,*"), "generateSystemDump")

      • Portable heap dump (PHD):

        AdminControl.invoke(AdminControl.completeObjectName("type=JVM,process=server1,*"), "generateHeapDump")

        После 10 операций heapdump за один сеанс JVM эта команда начнет выдавать исключение HeapDumpOnDiskLimitReachedException (это относится только к данной команде JMX). Этот предел можно увеличить с помощью следующей команды (после перезагрузки этот параметр не действует):

        AdminControl.invoke(AdminControl.completeObjectName("type=JVM,process=server1,*"), "setMaxDumpsOnDisk", "20")

  • Метод на основе событий

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

    • Использование механизма дампа IBM: Механизм дампа обеспечивает генерирование PHD или системного дампа по самым разнообразным событиям, а также возможность фильтровать эти события по типам, чтобы обеспечить детальный контроль над созданием дампов. Вот наиболее распространенная настройка по OutOfMemoryError (устанавливается в общих аргументах JVM сервера приложений):

      -Xdump:heap:none -Xdump:java+system:events=systhrow,filter=java/lang/OutOfMemoryError,range=1..4,request=exclusive+compact+prepwalk

      По событию OutOfMemoryError эта команда создает системный дамп IBM (и потоковый дамп), вместо portable heap dump. В любой рабочей установке WebSphere Application Server должен быть установлен следующий параметр командной строки -Xdump :

      -Xdump:heap:none -Xdump:java+system:events=systhrow,filter=java/lang/OutOfMemoryError,range=1..4,request=exclusive+compact+prepwalk


Требования по постобработке для системных дампов IBM

Системный дамп IBM должен подвергаться постобработке с использованием инструмента jextract из JDK:

WebSphere_Application_Server_Install_Path/java/jre/bin/jextract core

В идеале jextract выполняется на той же физической машине, которая выдала дамп, с использованием jextract из той же установки JDK, которая выдала дамп, и с доступом для чтения к тем же библиотекам, с которыми работал процесс Java. При обработке дампа jextract может потреблять значительное количество циклов процессора, что неприемлемо для некоторых производственных систем. В этом случае дамп следует обработать на наиболее близкой системе, такой как система предпроизводственного тестирования. Версии среды выполнения Java service refresh (SR) и fix pack (FP) должны совпадать.

Инструмент jextract создает ZIP-файл, который включает в себя оригинальный основной дамп, обработанное представление дампа, исполняемый код Java и библиотеки, используемые в процессе Java. Оригинальный дамп можно удалить, так как он входит в состав ZIP. ZIP-файл нужно загрузить в память инструмента Memory Analyzer.


Установка параметров командной строки Java с консоли администратора WebSphere Application Server

Параметры командной строки Java можно задать в консоли администратора WebSphere Application Server, используя пункт меню generic JVM arguments на панели Java Virtual Machine определения процесса. Чтобы найти панель Java Virtual Machine, выполните следующие действия.

  1. Перейдите в консоль администратора и выберите Servers > Server Types > WebSphere application servers на левой панели.
  2. Выберите сервер приложений на главной панели (рисунок 1).
    Рисунок 1. Выбор сервера приложений
    Рисунок 1. Выбор сервера приложений
  3. Разверните пункт Java and Process Management справа от главной панели и выберите Process definition (рисунок 2).
    Рисунок 2. Выбор определения процесса
    Рисунок 2. Выбор определения процесса
  4. Выберите пункт Java Virtual Machine справа (рисунок 3).
    Рисунок 3. Выбор Java Virtual Machine
    Рисунок 3. Выбор Java Virtual Machine
  5. В нижней части главной панели отображается текстовое поле аргументов JVM.

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


Установка Memory Analyzer и IBM Extensions

Memory Analyzer устанавливается в IBM Support Assistant. IBM Extensions for Memory Analyzer (далее - IBM Extensions) устанавливается с помощью функции обновления в IBM Support Assistant или в Eclipse Memory Analyzer Tool (MAT). Инструкции по установке этих инструментов содержатся в документации по IBM Monitoring and Diagnostic Tools for Java - Memory Analyzer, IBM Support Assistant и Eclipse Memory Analyzer Tool. Ниже приведены общие действия по установке.

  1. Установите и откройте IBM Support Assistant.
  2. Выберите Update > Find New... > Tools Add-ons.
  3. Разверните список JVM-based Tools.
  4. Выберите плагин с именем IBM Monitoring and Diagnostic Tools for Java - Memory Analyzer [Tech Preview]]
  5. После установки Memory Analyzer перезапустите IBM Support Assistant.
  6. Запустите Memory Analyzer, нажав кнопку Analyze Problem, а затем IBM Monitoring and Diagnostic Tools for Java - Memory Analyzer [Tech Preview]. Нажмите кнопку Launch.

IBM Extensions ― это набор плагинов для инструмента Memory Analyzer в составе IBM Support Assistant и Eclipse MAT. Эти расширения предоставляют дополнительные возможности по отладке как обычных приложений Java, так и специальных программных продуктов IBM путем накопления знаний об этих продуктах в расширениях. В настоящее время IBM Extensions предлагает расширения для:

  • среды выполнения Java SE,
  • WebSphere Application Server,
  • IBM WebSphere eXtreme Scale,
  • IBM CICS® Transaction Gateway.

В следующих пунктах кратко изложены шаги по установке IBM Extensions в IBM Support Assistant, процесс для MAT почти такой же.

  1. В меню IBM Support Assistant выберите File > Preferences.
  2. Выберите Updater Preferences.
  3. Выберите Automatically include this location when searching for new or updated plug-ins.
  4. Выберите Use this specified update site in addition to the IBM Support Assistant update site.
  5. Выберите http из раскрывающегося списка, а затем введите URL http://dl.alphaworks.ibm.com/ettktechnologies/updates.
  6. Теперь при поиске новых инструментов и обновлений IBM Support Assistant будет искать обновления IBM Extensions для Memory Analyzer. Чтобы IBM Support Assistant искал новые инструменты, выберите Update > Find New... > Tools Add-ons из меню внутри IBM Support Assistant.
  7. Разверните список JVM-based Tools.
  8. Выберите плагины с именами, начинающимися на "IBM Extensions for Memory Analyzer -". Плагины IBM Extensions for Memory Analyzer - Utilities (required) должны быть установлены обязательно. Остальные можно установить в зависимости от имеющихся продуктов.
  9. Примите условия лицензионного соглашения и нажмите кнопку Finish.
  10. После перезагрузки панели управления IBM Support Assistant новые расширения должны быть установлены и готовы к работе в Memory Analyzer.

Использование IBM Extensions внутри Memory Analyzer

Постоянно включенные расширения

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

Рисунок 4. Вкладка Memory Analyzer, показывающая крупный объект
Рисунок 4. Вкладка Memory Analyzer, показывающая крупный объект

В дереве Dominator (которое представляет собой список объектов, вместе составляющих всю кучу Java), процесс группирования загрузчика классов заменяет имя загрузчика классов описанием того, что именно он загружает. Например, на рисунке 5 выбранный загрузчик классов показывает, что это загрузчик классов Web-приложения PlantsByWebSphere.

Рисунок 5. Дерево Dominator, сгруппированное загрузчиком классов с расширением продукта IBM
Рисунок 5. Дерево Dominator, сгруппированное загрузчиком классов с расширением продукта IBM

Расширения с выпадающими меню

Некоторые расширения IBM представляют собой исполняемые запросы, которые можно выбирать из выпадающего меню Query Browser. IBM Extensions находятся в категории IBM Extensions и делятся на три подкатегории: Java SE Runtime, CICS Transaction Gateway и WebSphere Application Server (рисунок 6).

Рисунок 6. Кнопка Open Query Browser открывает контекстное меню, которое приводит к запросам расширений для продукта IBM
Рисунок 6. Кнопка Open Query Browser открывает контекстное меню, которое приводит к запросам расширений для продукта IBM

В настоящее время доступны следующие запросы.

  • Java SE runtime
    • Java Overview выводит краткую информацию о среде выполнения Java и процессе, включая поставщика, версию операционной системы, каталог Java, путь к классу и командную строку.
    • DirectByteBuffers выдает два отчета: краткие сведения о количестве экземпляров DirectByteBuffer, связанной с ними памяти и их назначении, а также таблицу каждого экземпляра DirectByteBuffer.
    • List All Objects выдает список всех объектов Java в куче, первоначально упорядоченных по размеру отдельных объектов.
    • List All GC Roots выдает список всех корней сбора мусора (garbage collection roots) - объектов, на которые есть ссылки из-за пределов кучи Java, из таких областей, как потоки или JNI-код. Эти объекты выступают в качестве отправных точек, которые сборщик мусора использует для определения того, какие объекты Java все еще используются Java-приложением.
    • Export Object позволяет записать граф объекта в текстовом виде в текстовый файл.
    • Calculate Naive Retained Heap Size определяет все объекты, на которые ссылается данный объект, игнорируя тот факт, что на некоторые из этих объектов могут ссылаться и другие части приложения.
  • CICS Transaction Gateway
    • Overview выдает простой обзор CICS Transaction Gateway с информацией о версии и сборке, конфигурации, с которой он работает, и списком всех установленных переменных окружения.
    • Active Conversations перечисляет все активные IPIC-диалоги в CICS Transaction Gateway с указанием их текущих сеансов и состояний.
    • Requests выдает объекты ECI-запросов в CICS Transaction Gateway, которые обработаны или находятся в стадии обработки.
    • Statistics выдает статистику, собранную CICS Transaction Gateway.
  • WebSphere Application Server
    • WAS Overview выдает краткую информацию о среде выполнения WebSphere Application Server, включая наименование и версию продукта, имя сервера, узел, ячейку и статус установленных приложений.
    • WAS Cache Analysis выдает краткую информацию о буферах сервера приложений с указанием их размеров, размещения и выделенной памяти.
    • Web Container Analysis выдает данные об установленных Web-приложениях, их размещении и количестве связанных с ними HTTP-сеансов.
    • Thread Pool Analysis выдает таблицу пулов потоков сервера приложений, содержащую: конфигурацию пула потоков, текущий размер и наличие подвешенных потоков, а также таблицу групп потоков Java-уровня, содержащую количество потоков и объем связанной ними памяти.
    • HTTP Sessions выдает список всех HTTP-сеансов в памяти, имя приложения, идентификатор сеанса, имя пользователя, тайм-аут, а также время создания и последнего доступа. Кроме того, можно развернуть любой HTTP-сеанс и посмотреть ключи и значения, связанные с самим сеансом.
    • EJB Container предоставляет простые данные о количестве EJB каждого типа, установленных на сервере приложений.
    • Application Class Loader Leaks Выдает список всех загрузчиков классов приложения, показывая, есть ли среди них остановленные и, следовательно, утечка памяти. Затем это можно использовать для определения проблемных приложений.
    • Alarm Manager выдает список откладываемых, неоткладываемых, отложенных и не поставленных в очередь предупредительных сигналов.
  • WebSphere eXtreme Scale
    • Priority Queue Runnables находит проблемы, описанные в APAR PM30264.

Расширения в действии

Запрос WAS Overview

Запрос WAS Overview ― это простой запрос, который показывает версию и уровень пакета исправлений WebSphere Application Server, работающего в настоящее время, а также имя сервера, узла и ячейки, предполагаемое время запуска процесса и список всех приложений с их рабочим состоянием (рис. 7). Этот запрос можно вызвать через меню Open Query Browser > IBM Extensions > WebSphere Application Server > WAS Overview.

Рисунок 7. Запрос WebSphere Application Server Overview
Рисунок 7. Запрос WebSphere Application Server Overview

Запрос HTTP Sessions

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

В ответ на запрос HTTP Sessions вся эта информация выдается в виде дерева (рисунок 8). Доступ к нему осуществляется через Open Query Browser > IBM Extensions > WebSphere Application Server > HTTP Sessions. Столбцы под пунктирной линией на рисунке - это продолжение верхних столбцов.

Рисунок 8. Запрос WebSphere Application Server HTTP Sessions
Рисунок 8. Запрос WebSphere Application Server HTTP Sessions

Каждый объект сеанса можно раскрыть, чтобы увидеть его пары ключ/значение. На рисунке 9 показаны пять атрибутов сеанса. Каждый ключ имеет вид sessN, а значение представляет собой специальный объект. Если значение отличается от String, строку можно развернуть, чтобы увидеть объект.

Рисунок 9. Запрос WebSphere Application Server HTTP Sessions с развернутым сеансом и его атрибутами
Рисунок 9. Запрос WebSphere Application Server HTTP Sessions с развернутым сеансом и его атрибутами

Этот плагин работает и с PHD heapdumps, но большая часть метаданных будет отсутствовать, и будут известны размеры атрибутов только для сохраненной кучи.

Запрос Application Class Loader Leaks

Утечка загрузчика классов приложений происходит при перезапуске приложений, когда их загрузчики классов не очищены. Это часто бывает вызвано ссылкой на приложение из какого-то другого места на сервере, например, из ThreadLocals. Это может быть вызвано и дефектами в самом WebSphere Application Server. Если утечка загрузчика классов приложений существует, и приложение перезапускалось достаточное количество раз, это может привести к ошибкам типа OutOfMemoryErrors Java или приложения.

Запрос Application ClassLoader Leaks находит все остановленные загрузчики классов приложения и определяет, что сделало загрузчик классов недоступным для сборки мусора. Этот плагин хорошо работает и на дампе кучи PHD (рисунок 10). Доступ к нему осуществляется через Open Query Browser > IBM Extensions > WebSphere Application Server > Application ClassLoader Leaks.

Рисунок 10. Запрос WebSphere Application Server Application ClassLoader Leaks
Рисунок 10. Запрос WebSphere Application Server Application ClassLoader Leaks

Заключение

Анализатор памяти и IBM Extensions для Memory Analyzer позволяет лучше понять, что происходит внутри WebSphere Application Server и в сопутствующих продуктах. Мы рекомендуем попробовать приемы и плагины, изложенные в этой статье, для среды выполнения IBM, в частности, с системными дампами, вместо PHD-дампов. Примите участие в форуме alphaWorks и сообщите нам, что вы еще вы хотели бы узнать из системных дампов.

Ресурсы

Научиться

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

Обсудить

Комментарии

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
ArticleID=810251
ArticleTitle=Служба поддержки: Memory Analyzer (с плагином IBM Extensions) теперь анализирует не только утечки памяти
publish-date=04162012