Эффективное профилирование Java-приложений

Дата и время: 17-18 октября 2018, 10:00-18:00.

Место проведения: Санкт-Петербург, Петроградская наб., 36А, офис OpenWay.

OpenWay

Ценность курса

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

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

Данный тренинг даёт разработчику ключевые знания и навыки для эффективного применения профайлера в своей работе.

Тренинг также может быть полезен специалистам в области больших данных (Big Data).

Предполагаемая аудитория

Разработчики / архитекторы Java (всех уровней подготовки), Big Data-инженеры, SRE (Site Reliability Engineer).

Список ПО для практической части

Для работы с упражнениями участникам тренинга необходим ноутбук со следующим ПО:

  • комплект разработки Java (JDK) от Oracle — версия не ниже 8u144;
  • Apache Maven — версия не ниже 3.0.5;
  • git-клиент;
  • любая интегрированная среда разработки Java;
  • может быть использована любая операционная система.

План тренинга

Тренинг организован в виде 8 академических пар (90 минут).

Секция 1

Введение. Подход к анализу проблемы сверху вниз. Классификация типовых проблем и дерево принятия решений. Базовая диагностика проблемного приложения с использованием инструментов JDK.

Секция 2

Поиск «горячего кода» методом сэмплирования дампов потоков. Работа с VisualVM. Визуализация результатов сэмплирования: дерево вызовов, инвертированное дерево вызовов, Flame Graph.

Секция 3

Сброка мусора и его влияние на производительность. Анализ логов сборки мусора. События сборки мусора в Mission Control / Java Flight Recorder. Критерии нормальной работы сборщика мусора.

Секция 4

Анализ содержимого памяти JVM. Использование гистограмм классов для анализа статической и динамической нагрузки на память. Получение дампа памяти JVM и работа с ним. Использование языка запросов OQL для анализа дампов.

Секция 5

Углублённая работа с Java Flight Recorder. Семплирование аллокаций памяти и другие возможности инструмента.

Секция 6

Закрепление темы сэмплирования дампов потоков. Демонстрация смещения оценки, характерной для сэмплирования.

Секция 7

Использование трассировки при поиске узких мест. Трассировка с использованием Visual VM. Трассировка с помощью BTrace. Анализ проблем многопоточности. Демонстрация различных вариантов межпоточных блокировок (deadlocks) и методы их обнаружения.

Секция 8

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


Алексей Рагозин
Алексей Рагозин
 

Алексей Рагозин — автор курса и тренер, имеет более 10 лет опыта в области разработки высоконагруженных распределенных систем в различных индустриях. Алексей — активный докладчик на российских и зарубежных конференциях в области ПО и контрибьютор в open source.