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?

InformationsquelleAutor skaz | 2011-09-01
Schreibe einen Kommentar