Доклад от партнера

Диагностика проблем в Java-приложениях с помощью внутреннего дампера потоков

  • На русском языке

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

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

Диагностический модуль запускает первый поток, который по таймеру сбрасывает дамп потоков через интерфейс JVMTI в файл. Первая версия была выпущена для Java 1.8, и для надежной работы пришлось решить много проблем, связанных с различиями JRE и JDK. 

После выхода Java 9 модуль существенно упростился. Больше половины трудозатрат ушло на то, чтобы сделать его удобным в эксплуатации. Была реализована работа без единой настройки, гибкая система настроек для кастомизации, интерфейсы управления JMX и REST, ротация файлов, защита от повторной загрузки, диагностика ошибок. После того как все «детские болезни» были побеждены, в команде стали принудительно подключать модуль к каждому сервису с помощью собственного плагина сборки, так что разработчикам не нужно было делать вообще ничего. В результате процесс локализации и устранения ошибок существенно упростился. Большая часть ошибок обнаруживается еще на стадии НТ, а если все-таки что-то необычное произойдет в проде, то в команде уверены, что проблема будет диагностирована и максимально быстро устранена.

Спикеры

Приглашенные эксперты

Расписание