пятница, 10 июля 2015 г.

Находим утечки соединений при помощи JavaMelody

JavaMelody - это инструмент для мониторинга web приложений. Во время работы собирает различную статистику, например:
  • количество http соединений, пользовательских сессий.
  • количество jdbc соединений, более того можно узнать какие производились запросы и какие из них являются "горячие". Есть возможность увидить открытые в данный момент с точностью до метода из которого происходит обращение, это очень полезно для выявления так называемых утечек соединений.
  • количество памяти и загруженность процессора и прочее.
Всю эти данные он агрегируют и рисует графики в реальном времени. Более подробную информацию можно узнать пролистав вот эту презентацию. Проект является открытым, т.е. есть возможность посмотреть исходники.
На официальном сайте представлена инструкция по установке, но после проделаных шагов описанных в ней, javaMelody не анализировала соединения к базе данных.В моем случае приложение использовало spring + hibernate,а работало на сервере приложений tomcat. Пришлось допиливать.
Для начала в pom.xml, если вы используете maven добавим нужные зависимости:
После чего, необходимо изменить web.xml
где, spring/context.xml является путь до вашего контекста приложения spring.
В моем приложении spring использовал datasource описаном в context.xml tomcat'a. Производим замену бина в контексте spring, где datasource берется через JNDI.

После этого, осталось запустить приложение с ключом:
-Djavamelody.datasources=java:comp/env/jdbc/myDataSource
Панель javaMelody находится по адресу http://<адрес вашего приложения>/monitoring


интерфейс javamelody