2009-07-06 4 views
0

Я использую DBCP Apache с JNDI в контейнере tomcat для объединения соединений с базой данных mysql. Все работает нормально, но проблема, которую я вижу, заключается в том, что после объединения соединения он никогда не выпускается. Таким образом, после подключения нагрузки шип сидеть их навсегда спать. Является ли их способ сжать пул через параметры context.xml? вот мой ocnfiguration:Как сжать DB Pool Pool?

 defaultAutoCommit="false" 
     defaultTransactionIsolation="REPEATABLE_READ" 
     auth="Container" 
     type="javax.sql.DataSource" 
     logAbandoned="true" 
     removeAbandoned="true" 
     removeAbandonedTimeout="300" 
     maxActive="-1" 
     initialSize="15" 
     maxIdle="10" 
     maxWait="10000" 
     username="user" 
     password="password" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost/mydb"/> 

ответ

2

Попробуйте установить minEvictableIdleTimeMillis на более низкое значение, чем значения по умолчанию, который 1000*60*30.

+1

Вы также должны установить следующие свойства: testWhileIdle, timeBetweenEvictionRunsMillis, validationQuery –

1

пытаются использовать соединение c3p0 pool`

~~
+0

Действительно, это лучше, чем DBCP, в настоящий момент как минимум. И имена параметров легко понять. Ваш пост не пытается решить проблему под рукой :). Anyways +1 –

1

В сопоставимых ситуациях я использовал JMX адаптер Tomcat, чтобы настроить параметры пула соединений. Это можно использовать как для увеличения, так и для уменьшения размера пула. Поэтому рекомендуется включить удаленный доступ JMX к контейнеру сервлетов, по крайней мере, в производственных средах, просто чтобы иметь возможность реагировать на исключительные операционные ситуации.