Maison > Article > base de données > Comment résoudre l'impasse causée par c3p0
Le code a été testé localement et était correct, je l'ai donc mis sur le serveur externe pour le tester, et une erreur comme celle-ci s'est produite
com.mchange.v2.async.ThreadPoolAsynchronousRunner -466510 78 [Timer-18] WARN com.mchange.v2.async.ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1c17bd4 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
J'étais confus quand j'ai vu ça, que dois-je faire ? Pourquoi une telle situation est-elle apparue ?
Ma réponse est :
Parce que le nombre de connexions au La base de données est limitée. Chaque fois que l'application démarre C3p0, elle occupera la connexion à la base de données pour remplir le pool de connexions C3p0. Lorsque les ressources de la base de données sont occupées, un blocage sera signalé car les ressources partagées ne peuvent pas être obtenues.
Modifier le nombre maximum de connexions et le nombre de connexions initiales dans le fichier de configuration correspondant :
Avant modification :
<property name="maxPoolSize" value="100" /> <property name="initialPoolSize" value="2" />
Après modification :
<property name="maxPoolSize" value="1" /> <property name="initialPoolSize" value="1" />
Redéployez et exécutez, ok !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!