От http://www.mchange.com/projects/c3p0/#other_ds_configuration
numHelperThreads и maxAdministrativeTaskTime помощ за конфигуриране на поведението на пуловете на нишките на DataSource. По подразбиране всеки източник на данни има само три свързани помощни нишки. Ако изглежда, че производителността се влачи при голямо натоварване или ако забележите чрез JMX или директна проверка на PooledDataSource, че броят на "изчакващите задачи" обикновено е по-голям от нула, опитайте да увеличите numHelperThreads. maxAdministrativeTaskTime може да бъде полезно за потребители, които изпитват задачи, които висят за неопределено време и съобщенията „ВЪЗДЕЙСТВИЕ ЗАСТЪПВАНЕ“. (Вижте Приложение A за повече.)
maxAdministrativeTaskTime По подразбиране:0 секунди преди пулът от нишки на c3p0 ще се опита да прекъсне очевидно закачена задача. Рядко полезен. Много от функциите на c3p0 не се изпълняват от клиентски нишки, а асинхронно от вътрешен пул от нишки. Асинхронността на c3p0 подобрява директно производителността на клиента и минимизира продължителността на времето, през което се задържат критичните заключвания, като гарантира, че бавните jdbc операции се изпълняват в нишки без заключване. Ако, обаче, някои от тези задачи "увиснат", тоест нито успеят, нито се провалят с изключение за продължителен период от време, пулът от нишки на c3p0 може да се изчерпи и административните задачи да бъдат архивирани. Ако задачите са просто бавни, най-добрият начин да разрешите проблема е да увеличите броя на нишките чрез numHelperThreads . Но ако задачите понякога висят за неопределено време, можете да използвате този параметър за принудително извикване на метода interrupt() на нишката на задачата, ако дадена задача надвишава зададено времево ограничение. [c3p0 в крайна сметка ще се възстанови от закачени задачи така или иначе, като сигнализира за „ОЧИВНА ЗАСТЪПКА“ (ще го виждате като предупреждение в регистрационните файлове), замени нишките на задачите на пула от нишки и прекъсне()на оригиналните нишки. Но оставянето на пула да влезе в ИЗВЪРШЕН ЗАСТЪПВАНЕ и след това да се възстанови означава, че за някои периоди производителността на c3p0 ще бъде нарушена. Така че, ако виждате тези съобщения, увеличаването на numHelperThreads и настройката на maxAdministrativeTaskTime може да ви помогне . maxAdministrativeTaskTime трябва да бъде достатъчно голям, за да се очаква всеки разумен опит за придобиване на връзка от базата данни, за тестване на връзка или два унищожаване на връзка, да успее или да се провали в рамките на зададеното време. Нула (по подразбиране) означава, че задачите никога не се прекъсват, което е най-добрата и най-безопасната политика при повечето обстоятелства. Ако задачите са просто бавни, разпределете повече нишки. Ако задачите висят завинаги, опитайте се да разберете защо и може би настройката maxAdministrativeTaskTime може да помогне междувременно.
The default is 3 for numHelperThreads , increase this to 8-10
setting maxAdministrativeTaskTime will help