2014-12-05 1 views
0

У меня есть базы данных MySQL, сконфигурированной значение MAX_CONNECTIONS 150. У меня также есть веб-приложение Java 6 работает в Tomcat 5.5 настроен с помощью следующей установки:слишком мало подключений из приложения Tomcat

<Resource name="jdbc/myDB" 
type="javax.sql.DataSource" 
driver="com.mysql.jdbc.Driver" 
username="username" 
password="password" 
maxActive="100" 
maxIdle="100" 
maxWait="-1" 
removeAbandoned="true" 
removeAbandonedTimeout="300" 
logAbandoned="true" 
url="jdbc:mysql://localhost:3306/myDB?autoreconnect=true" 
validationQuery="SELECT 1" /> 

Это приложение является не используя какие-либо сторонние рамки, просто базовые сервлеты Java. У меня есть ошибка в некотором коде в приложении java, который неправильно освобождает открытые соединения mysql из пула. Я работаю над их выявлением и исправлением. Но в то же время мне нужно выяснить, почему в большинстве случаев доступно только 25 подключений к mysql. После того, как эти 25 соединений будут использованы, приложение перестает отвечать на запросы.

Может кто-нибудь, пожалуйста, помогите мне разобраться, почему и mysql, и tomcat настроены для 100+ соединений, но это позволяет делать только 25 за раз?

+0

У вас может быть пул соединений с базой данных, настроенный на сервере приложений, который управляет повторным использованием соединений. – Rob

+0

@Rob, я добавил настройку пула подключений к моему вопросу, вы видите что-то не так с ним? –

ответ

0

Tomcat пула соединений JDBC

Что пул соединений вы используете?

Вы используете Tomcat JDBC Connection Pool, а не пул Apache Commons? Он имеет свойства detect connection leaks или отказаться от подключения, которое открыто в течение длительного времени, чем установленный тайм-аут.

0

Max_connections MySQL был установлен в 150, а max_user_connections был установлен в 25, что является ограничивающим фактором здесь. Я удалил этот параметр из my.cnf, чтобы восстановить его значение по умолчанию неограниченно.