Der Code wurde lokal getestet und war korrekt, also habe ich ihn zum Testen auf den externen Server gelegt, und ein Fehler wie dieser ist aufgetreten
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!
Ich war verwirrt, als ich es sah Was soll ich tun? Warum ist es zu einer solchen Situation gekommen?
Meine Antwort ist:
Weil die Anzahl der Verbindungen zum Die Datenbank ist begrenzt. Jedes Mal, wenn die Anwendung C3p0 startet, wird die Datenbankverbindung belegt, um den C3p0-Verbindungspool zu füllen. Wenn die Datenbankressourcen belegt sind, wird ein Deadlock gemeldet, da die gemeinsam genutzten Ressourcen nicht abgerufen werden können.
Ändern Sie die maximale Anzahl der Verbindungen und die Anzahl der Erstverbindungen in der entsprechenden Konfigurationsdatei:
Vor der Änderung:
<property name="maxPoolSize" value="100" /> <property name="initialPoolSize" value="2" />
Nach der Änderung:
<property name="maxPoolSize" value="1" /> <property name="initialPoolSize" value="1" />
Erneut bereitstellen und ausführen, ok!
Das obige ist der detaillierte Inhalt vonSo lösen Sie den durch c3p0 verursachten Deadlock. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!