Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Зависание Java database connection pool DBCP(org.apache.commons.dbcp) / 2 сообщений из 2, страница 1 из 1
24.02.2014, 15:54
    #38570612
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зависание Java database connection pool DBCP(org.apache.commons.dbcp)
Добрый день!
Программа использующая технологию Spring JDBC, в качестве пула подключения к БД, использовала apache DBCP:
datasource-context.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"	
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:property-placeholder location="classpath:jdbc.properties"/>
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    	<property name="driverClassName" value="${jdbc.driverClassName}"/>
    	<property name="url" value="${jdbc.url}"/>
    	<property name="username" value="${jdbc.username}"/>
    	<property name="password" value="${jdbc.password}"/>
	</bean>
	
    <bean id="OutrunDao" class="ru.FoxGSM.IOutruns.dao.JdbcOutrunDao">
        <property name="dataSource" ref="dataSource"/>
    </bean>
			
</beans>


При выполнении простого запроса типа:
Код: java
1.
List<City> list = jdbcTemplate.query(CITY_SQL, new CityMapper());


Программа после 3-4 запроса наглухо зависала без сообщения об ошибки. :(

Перешел на BoneCP
datasource-context.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"	
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:property-placeholder location="classpath:jdbc.properties"/>
	<!--<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">-->
	<!--<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">-->
	<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
    	<property name="driverClass" value="${jdbc.driverClassName}"/>
    	<property name="jdbcUrl" value="${jdbc.url}"/>
    	<property name="username" value="${jdbc.username}"/>
    	<property name="password" value="${jdbc.password}"/>
		<property name="idleConnectionTestPeriod" value="60"/>
   		<property name="idleMaxAge" value="240"/>
   		<property name="maxConnectionsPerPartition" value="30"/>
   		<property name="minConnectionsPerPartition" value="10"/>
   		<property name="partitionCount" value="3"/>
   		<property name="acquireIncrement" value="5"/>
   		<property name="statementsCacheSize" value="100"/>
   		<property name="releaseHelperThreads" value="3"/>    	
	</bean>
	
    <bean id="OutrunDao" class="ru.FoxGSM.IOutruns.dao.JdbcOutrunDao">
        <property name="dataSource" ref="dataSource"/>
    </bean>
			
</beans>


все работает…
Вопрос: Не ужели apache DBCP такой глючный? Или я просто не умею его готовить???
P.S. jdbc.driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver (ver, 4.0)
...
Рейтинг: 0 / 0
24.02.2014, 16:11
    #38570632
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зависание Java database connection pool DBCP(org.apache.commons.dbcp)
Отформатируйте нормально отступы в XML. Не возможно же читать.
Научитесь снимать и анализировать дамп потоков, когда они зависают.
Нет, DBCP не такой глючный, чтобы проблемы были очевидны на тестовых примерах. Возможно где-то неочевидным образом утекают соединения. Зависание, обычно, происходит, когда все соединения из пула были взяты, он ни одно из них не вернули на место. Определить что именно произошло можно по дампу зависшего потока.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Зависание Java database connection pool DBCP(org.apache.commons.dbcp) / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]