Утечка соединения с базой данных при прекращении (не остановке) кота при затмении - PullRequest
1 голос
/ 08 марта 2012

Писать хороший заголовок для этой проблемы было так же сложно, как и искать его в Интернете.

У меня много проектов, некоторые находятся в эксплуатации (они были продуктивными годами)и другие в активном развитии.Это важный факт, потому что проблема возникает во всех проектах на моем компьютере, а не на других.

Проблема в том, что я запускаю все веб-проекты на tomcat, и все они имеют подключения к базе данных.Я всегда использовал кнопку «Завершить» вместо кнопки «Стоп», чтобы перезапустить или остановить кота от затмения.

Для тех, кто не знает, кнопка завершения - это красная кнопка, которая останавливает приложение из консоли журнала или консоли отладки, в то время как кнопка остановки - это та же красная кнопка, но на консоли сервера.

Гораздо быстрее останавливать серверы с помощью кнопки завершения, чем кнопки остановки, проблема в том, что с тех пор, как я обновил до Helios, мои подключения к базе данных больше не закрываются при прекращении работы серверов ... они делаютпри нормальной их остановке.

Нет нужды говорить, что я обнаружил это, потому что серверы баз данных (Oracle, MySQL и SQLServer) начали выдавать ошибки "Too many connections".

Это огромная ошибка.для меня, потому что код не имеет ничего общего с этой проблемой, разные типы управления базами данных в разных проектах имеют одну и ту же проблему, только на моей машине!Да, я пробовал это на других компьютерах, и проблема не возникает.

Я перепробовал все, что мог придумать, от форматирования ...

  • Обновлен до Indigo
  • Переустановил Galileo (даже скачал свежую копию)
  • Переустановил и попробовал разные базы данных
  • Пробовал разные версии Tomcat (6 и 7)

ЯЯ начинаю думать, что это может не быть проблемой IDE, и это просто случилось, когда я обновил eclipse.

ЛЮБЫЕ предложения приветствуются!

1 Ответ

1 голос
/ 13 июня 2012

Когда вы останавливаете Tomcat, используя эту красную кнопку, Tomcat фактически запрашивается остановить себя. Если какой-либо оператор SQL вашего веб-приложения заблокирован, Tomcat не остановится. Это, вероятно, вызывает утечку соединения.

Зачем блокировать оператор SQL? Обычно это происходит, если другой пользователь базы данных обновляет или удаляет ту же запись, которую ваше приложение пытается обновить / изменить.

Однако в моем случае Eclipse показывает всплывающее окно примерно через 30 секунд, чтобы предупредить, что Tomcat не остановился. Всплывающее окно спрашивает, следует ли завершить работу Tomcat (который должен завершиться, даже если заблокированное соединение существует).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...