Описание
Примерно каждый первый профессиональный разработчик на Java, Kotlin и других JVM языках рано или поздно сталкивается с проблемами производительности, связанными с многопоточностью. Начиная от банального залипания одного потока и заканчивая изощрёнными многоступенчатыми deadlock’ами, такие проблемы могут докучать отдельным “счастливым” пользователям или вовсе положить весь production. И полностью предотвратить их практически невозможно.
Основным инструментом диагностики в этих случаях являются дампы потоков (thread dumps). Но чтобы они действительно помогали, нужно знать, какими способами их получать в разных ситуациях, чем анализировать в зависимости от проблемы и, конечно, как по ним находить и устранять причины сбоев.
Этим задачам и посвящён данный тренинг. Помимо них, вы также научитесь выявлять разницу в поведении потоков через дампы и понимать, в каких случаях дампы потоков можно и нужно заменить/дополнить другими инструментам диагностики.
Содержание
Теория 🎓
Простое определение дампа потоков
Состав данных в дампе
Показания и противопоказания к применению
Занятость потока и ее связь с состояниями
Инструменты для снятия дампа потоков (6 видов)
Схожие функции в родственных инструментах (6 примеров)
Инструменты для анализа дампов (5 шт.)
Приёмы и техники анализа:
- Учёт состояний потоков
- Навигация по анонимным классам
- Выявление изменений во времени
- Что нужно знать о пулах потоков
Практика ⚒️
Разбор четырёх performance-багов, искусственно привнесенных в тестовое приложение Spring PetClinic REST.
Все четыре бага (учебных кейса) являются разновидностями блокировок — от почти очевидных до распределённых (с участием СУБД). Все они подробно описаны по следующей схеме:
- Легенда (краткое описание бизнес-логики кейса)
- Техническая реализация (краткое описание имплементации)
- Проблема
- Шаги воспроизведения
- Объяснение (разгадка проблемы с комментариями)
- Варианты решения (чаще всего несколько)
Примеры слайдов
Из теоретической части занятия
Материалы в шпаргалке
- Когда нужен дамп потоков
- Чем снимать
- Чем открывать
- Что искать сначала
Интересно?
Если хотите, чтобы я провёл этот тренинг в вашей компании, вы можете: