sql >> Database teknologi >  >> RDS >> Mysql

TILSYNLIGT DEADLOCK Oprettelse af nødtråde til ikke-tildelte afventende opgaver

Fra http://www.mchange.com/projects/c3p0/#other_ds_configuration

antalHelperThreads og maxAdministrativeTaskTime hjælp til at konfigurere adfærden for DataSource-trådpuljer. Som standard har hver DataSource kun tre tilknyttede hjælpetråde. Hvis ydeevnen ser ud til at trække under hård belastning, eller hvis du observerer via JMX eller direkte inspektion af en PooledDataSource, at antallet af "afventende opgaver" normalt er større end nul, så prøv at øge numHelperThreads. maxAdministrativeTaskTime kan være nyttigt for brugere, der oplever opgaver, der hænger på ubestemt tid, og "APPARENT DEADLOCK"-meddelelser. (Se appendiks A for mere.)

maxAdministrativeTaskTime Standard:0 sekunder før c3p0's trådpulje vil forsøge at afbryde en tilsyneladende hængt opgave. Sjældent brugbart. Mange af c3p0's funktioner udføres ikke af klienttråde, men asynkront af en intern trådpulje. c3p0's asynkroni forbedrer klientens ydeevne direkte og minimerer den tid, kritiske låse holdes ved at sikre, at langsomme jdbc-operationer udføres i tråde, der ikke holder fast. Men hvis nogle af disse opgaver "hænger", det vil sige, at de hverken lykkes eller mislykkes med en undtagelse i en længere periode, kan c3p0's trådpulje blive udtømt, og administrative opgaver bakkes op. Hvis opgaverne simpelthen er langsomme, er den bedste måde at løse problemet på at øge antallet af tråde via numHelperThreads . Men hvis opgaver nogle gange hænger på ubestemt tid, kan du bruge denne parameter til at tvinge et kald til opgavetrådens interrupt()-metode, hvis en opgave overskrider en fastsat tidsgrænse. [c3p0 vil til sidst komme sig fra hængte opgaver alligevel ved at signalere en "APPARENT DEADLOCK" (du vil se det som en advarsel i logfilerne), erstatte trådpuljens opgavetråde og afbryde()afbryde de originale tråde. Men at lade poolen gå i APPARENT DEADLOCK og derefter komme sig, betyder, at c3p0's præstation i nogle perioder vil blive forringet. Så hvis du ser disse meddelelser, kan forøgelse af antalHelperThreads og indstilling af maxAdministrativeTaskTime måske hjælpe . maxAdministrativeTaskTime skal være stor nok til, at ethvert rimeligt forsøg på at erhverve en forbindelse fra databasen, at teste en forbindelse, eller to ødelægge en forbindelse, forventes at lykkes eller mislykkes inden for den fastsatte tid. Nul (standarden) betyder, at opgaver aldrig afbrydes, hvilket er den bedste og sikreste politik under de fleste omstændigheder. Hvis opgaverne bare er langsomme, tildel flere tråde. Hvis opgaverne hænger for evigt, så prøv at finde ud af hvorfor, og måske kan indstilling af maxAdministrativeTaskTime hjælpe i mellemtiden.

The default is 3 for numHelperThreads , increase this to 8-10 

setting maxAdministrativeTaskTime will help 


  1. Karakteristika for en rapport

  2. SQL WHERE-sætning, der matcher værdier med efterfølgende mellemrum

  3. MySQL vælg rækker, hvor dato ikke er mellem dato

  4. CURRENT_DATE Funktion i Oracle