Я собираюсь оценить производительность большого Java-приложения. Каков наилучший подход к этому?
Это приложение на основе POJO, которое состоит из интерактивной части с пользовательским интерфейсом и уровнем WebService, но большая часть тяжелой бизнес-логики заключается в длительных пакетных процессах, реализованных с помощью Spring Batch. Приложение развертывается на сервере приложений JBoss и сохраняет данные в базе данных Oracle.
То, что я ищу, это не только производительность пакетного процесса или количество одновременных запросов, обрабатываемых онлайн-уровнем. Я также хочу получить больше информации и собрать некоторые внутренние метрики для таких вещей, как этапы пакетной работы, JDBC и т. Д. Кроме того, я собираюсь сопоставить метрики с общесистемными метриками, которые я могу получить из JVM, ОС, сервера приложений, базы данных .
В идеале я бы хотел сделать это без изменений кода, если это возможно.
Моя идея реализовать такого рода мониторинг производительности заключается в том, чтобы опираться на JMX и предоставить центральный компонент, который может собирать метрики из различных MBean-компонентов и коррелировать их. Кажется, что каждый основной компонент, который я хочу измерить, поддерживает JMX:
- Сервер приложений JBoss обладает широкими возможностями JMX
- Spring Batch может быть с поддержкой JMX с расширением Spring Batch Admin
- JVM в порядке для всех его внутренних органов, доступных через JMX
- Oracle с DMS MEtrics также дает хорошее представление о производительности канала JDBC
Мне было интересно, есть ли какие-нибудь хорошие фреймворки / инструменты с открытым исходным кодом, которые могли бы помочь мне в сборе, сопоставлении и визуализации метрик, как описано выше. Заранее спасибо за ваши рекомендации.
P.S. Я сделал свою домашнюю работу и просмотрел сцену с открытым исходным кодом, но не хочу указывать здесь какие-либо конкретные имена, чтобы избежать необъективных ответов.