Вячеслав Смирнов
Эксперт по тестированию @ АО "Райффайзенбанк"
Москва

Автоматизация профилирования JVM

Доклад принят в программу конференции

  • Категории: Разработка
  • Секции: Стачка.QA
  • Сложность: Senior

Описание:

Если вы столкнулись с трудноуловимой утечкой памяти на продуктиве в Java- ,Scala- , Groovy-приложении. И о ней вы узнаёте раз в месяц, когда приложение уже зависло и ни на что не реагирует. То вскоре задумаетесь в том, как собирать статистику о количестве и размере всех объектов в памяти JVM и отслеживать её изменение на графиках в Grafana. Смотреть, что же течёт, не в спешке, в момент падения, а заранее. А после исправления убеждаться, что проблема решена. Превратить поиск утечек в красивый и приятный процесс, используя свободное программное обеспечение. Дополнительным условием тут является то, что система в продуктиве не должна замедлиться.

Такая задача появилась для системы, работающей на десятках Linux-серверов с Java 8 и 12-ти Windows-серверах с Java 7. Решение получилось универсальным и масштабируемым. Создано на стыке свободных технологий: bash-, bat-, awk-скрипты, SJK-профайлер для сбора статистики, Telegraf и InfluxDB для сохранения и Grafana для отображения. И вот уже пол года решение успешно выполняет свою задачу.

Дополнительно, SJK-профайлер позволяет собирать статистику по производительности работы потоков. Выявлять медленные методы. И если выполнять это по чуть-чуть, раз в десять минут, то система не замедлится, а за пару недель статистика станет полной и наглядной.

В докладе поделюсь описание каждого компонента для автоматизации профилирования JVM. Вариантом интеграции компонент. И способом визуализации собранных метрик. Обсудим, как может быть устроено взаимодействие инженера по тестированию производительности, разработчика, DevOps-инженера при решении проблем производительности. И как автоматизация делает это взаимодействие приятным для всех.

О спикере

Вячеслав Смирнов

Эксперт по тестированию @ АО "Райффайзенбанк"
Москва

Эксперт по тестированию в Райффайзенбанке. Учился в ИжГТУ на разработчика. Развиваю сообщество инженеров по тестированию производительности qa_load.