Connection Pool Ausnahme: es Kann keine Verbindung hergestellt werden kann, pool-Fehler Zeitüberschreitung beim warten im Leerlauf Objekt
Ich bin mit einer web-Anwendung in Produktion, die vor kurzem abgestürzt ist, nachdem es war etwas unter stress. Ich würde vermuten, 100-300 Leute wurden auf die Webseite zugreifen, zu ähnlichen Zeiten, die ich erwarten würde, um zu funktionieren.
Den logs um die Zeit des Absturzes sind:
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <g:render>: Hibernate operation: could not inspect JDBC autocommit mode; uncategorize\
d SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot get a connection, pool error Timeout waiting for idle object; nested exception is org.apache.commons.db\
cp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object at /WEB-INF/grails-app/views/layouts/file.gsp:37
at gsp_file_gsp$_run_closure2.doCall(file_gsp.groovy:43)
at gsp_file_gsp$_run_closure2.doCall(file_gsp.groovy)
at gsp_file_gsp.run(gsp_file_gsp.groovy:48)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not inspect JDBC autocommit mode; uncategorized SQLException for SQL [???]; SQL stat\
e [null]; error code [0]; Cannot get a connection, pool error Timeout waiting for idle object; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot get a co\
nnection, pool error Timeout waiting for idle object
at User.find(User.groovy:68)
at User$find.call(Unknown Source)
at gsp_pps_file_gsp.run(gsp_file_gsp.groovy:22)
... 9 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:114)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at $Proxy7.getAutoCommit(Unknown Source)
... 12 more
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1144)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
... 14 more
Ich glaube, dies ist direkt mit einigen code Hinzugefügt habe ich vor kurzem meine Grails-Projekt, das Auswirkungen auf die Verbindung Pool (obwohl ich glaube, das ist nicht eine grails-spezifisches problem):
maxActive = 50
maxIdle = 15
minIdle = 5
initialSize = 15
minEvictableIdleTimeMillis = 180000
timeBetweenEvictionRunsMillis = 180000
maxWait = 10000
validationQuery = "/* ping */"
Was mache ich falsch? Bitte helfen Sie mit! Danke.
- Ist mein maxWait zu niedrig? Ich bin die Dokumentation Lesen, und das könnte schon das problem, aber ich kann nicht sagen, ich bin zuversichtlich, in es.
- Auch, wenn ich
show processlist;
in MySQL bekomme ich nur 8 verbindungen von meinem Apache server. Bedeutet das, dass dieser code nicht funktioniert? - Wenn ich mich Recht entsinne Ihre anfängliche problem war, dass Sie hatte ein paar tote verbindungen in Ihrem pool, da MySQL-Timeout. Haben Sie versuchen, nur Einstellung Ihrer Validierung string-und die lassen alles andere wie es war?
- Hast du eine Lösung für dieses Problem? Können Sie bitte teilen Sie die Auflösung?
- Prüfen Sie, ob Sie irgendeine undichte Verbindung. Überprüfen Sie Ihren code stackoverflow.com/questions/10440391/dbcp-connection-properties/...
- Tun Sie geschehen, um die abgestimmte server-max-thread-Anzahl gegenüber der Datenbank max Graf, nachdem er tätig war?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern sich die relevanten Teile:
Dies sollte wohl das Problem lösen.
Hatte ich schlechten code, dass war halten verbindungen am Leben viel länger als Sie sein sollten. Einmal habe ich Fix das zugrunde liegende problem ging Weg.