Анализ потоков

Тренинг по работе с дампами потоков

Титульный слайд

Описание

Примерно каждый первый профессиональный разработчик на Java, Kotlin и других JVM языках рано или поздно сталкивается с проблемами производительности, связанными с многопоточностью. Начиная от банального залипания одного потока и заканчивая изощрёнными многоступенчатыми deadlock’ами, такие проблемы могут докучать отдельным “счастливым” пользователям или вовсе положить весь production. И полностью предотвратить их практически невозможно.

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

Этим задачам и посвящён данный тренинг. Помимо них, вы также научитесь выявлять разницу в поведении потоков через дампы и понимать, в каких случаях дампы потоков можно и нужно заменить/дополнить другими инструментам диагностики.

Формат и стоимость тренинга приведены на странице серии тренингов про Производительность.

Содержание

Теория 🎓

  1. Простое определение дампа потоков

  2. Состав данных в дампе

  3. Показания и противопоказания к применению

  4. Занятость потока и ее связь с состояниями

  5. Инструменты для снятия дампа потоков (6 видов)

  6. Схожие функции в родственных инструментах (6 примеров)

  7. Инструменты для анализа дампов (5 шт.)

  8. Приёмы и техники анализа:

    • Учёт состояний потоков
    • Навигация по анонимным классам
    • Выявление изменений во времени
    • Что нужно знать о пулах потоков

Практика ⚒️

Разбор четырёх performance-багов, искусственно привнесенных в тестовое приложение Spring PetClinic REST.

Все четыре бага (учебных кейса) являются разновидностями блокировок — от почти очевидных до распределённых (с участием СУБД). Все они подробно описаны по следующей схеме:

  1. Легенда (краткое описание бизнес-логики кейса)
  2. Техническая реализация (краткое описание имплементации)
  3. Проблема
  4. Шаги воспроизведения
  5. Объяснение (разгадка проблемы с комментариями)
  6. Варианты решения (чаще всего несколько)
Кейс №4 требует подключения к PostgreSQL для воспроизведения распределённого deadlock’а. Для простоты запуска в репозитории проекта предусмотрен Docker Compose файл, но можно развернуть и вручную.

Примеры слайдов

Из теоретической части занятия

Материалы в шпаргалке

  • Когда нужен дамп потоков
  • Чем снимать
  • Чем открывать
  • Что искать сначала

Интересно?

Если хотите, чтобы я провёл этот тренинг в вашей компании, вы можете:

Владимир Плизга
Владимир Плизга
Программный инженер

Любимая технология: здравый смысл

Предыдущий