Mysql
 sql >> база данни >  >> RDS >> Mysql

ИЗВЪРШЕН ЗАСТЪПВАНЕ Създаване на спешни нишки за неразпределени висящи задачи

От 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 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо моят cfloop спира след вмъкване на първи идентификатор?

  2. изберете от една таблица и вмъкнете в друга

  3. Django не може да намери MySQLdb python модул

  4. MYSQL заявка / дати по-стари от преди 1 седмица (всички дати и времена в UTC)

  5. Създаване на колона с кумулативна сума в MySQL