Огромное веб-приложение в моем Tomcat иногда начинает использовать слишком много DBCP-соединений, что приводит к проблемам.
Чтобы исследовать, я хочу точно знать в каждый момент времени, какой поток/метод удерживает соединение с пулом. Не обязательно в режиме реального времени, посмертный анализ в порядке.
Я тщетно искал такой инструмент мониторинга DBCP, поэтому я собираюсь написать свой.
(если есть интерес, я могу сделать его открытым)
Вот мой план:
- Изменить PoolingDataSource.getConnection для регистрации "
DBCP+1 <thread-id>
" - Изменить DelegatingConnection.close для регистрации "
DBCP-1 <thread-id>
" - Напишите небольшой скрипт для создания этого простого CSV для визуализации:
ВОПРОС:
Я пропустил какую-то концепцию Commons-DBCP 1.4, которая делает эту идею недействительной?
Или я заново изобретаю колесо?