ошибки пула базы данных c3p0

Я получаю следующее исключение после того, как моя программа работает около 30 минут с 3cp0 в качестве пула соединений.

вот ошибка:

   [java]  INFO [Timer-0] (BasicResourcePool.java:1392) - A checked-out resource is overdue, and will be destroyed: com.mchange.v2.c3p0.impl.NewPooledConnection@eaecb09
    [java] The last packet successfully received from the server was 375,017 milliseconds ago.  The last packet sent successfully to the server was 9 milliseconds ago.
    [java] Exception in thread "main" java.lang.NullPointerException
    [java]  at com.mytest.myorg.MyProg.MyProgRunner.main(MyProgRunner.java:104)

и я настраиваю свой пул следующим образом:

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver            
cpds.setJdbcUrl( "jdbc:mysql://"+hostname+"/"+database );
cpds.setUser(username);                                  
cpds.setPassword(password);  
cpds.setMinPoolSize(5);                                     
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(15);
cpds.setAutoCommitOnClose(true);
cpds.setIdleConnectionTestPeriod(300);
cpds.setMaxStatements(180);
cpds.setNumHelperThreads(20);
cpds.setUnreturnedConnectionTimeout(300);

У меня есть 100 потоков, которые сканируют страницу, а затем 15 потоков БД, которые вставляют результаты в мою базу данных. Если задача сканирования занимает более 20 секунд, я закрываю поток. Любые идеи, почему пул соединений db просто умирает?

Спасибо


person James    schedule 22.07.2010    source источник


Ответы (2)


При использовании c3p0 есть некоторые свойства, которые необходимо инициализировать в файле c3p0.properties. Из них есть одно свойство с именем c3p0.unreturnedConnectionTimeout.

Его значение в секундах. Если какой-то запрос не вернул результат в течение указанного периода времени (как вы указали для свойства c3p0.unreturnedConnectionTimeout в файле c3p0.properties), то текущая сессия будет уничтожена, а новая сессия будет извлечена из пула сессий, но ваш код работает на предыдущий сеанс, который уже уничтожен. Итак, ваш код выдает исключение сессия уже закрыта.

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

Ваше здоровье

person Ankit Sharma    schedule 15.07.2013

это сообщение на форуме может вам помочь: http://old.nabble.com/A-checked-out-resource-is-overdue--td20545738.html#a20575081

В случае убитых потоков соединения возвращаются в пул?

person Hendrik Brummermann    schedule 22.07.2010