连接池异常:无法获得连接,池错误超时等待空闲对象

我正在生产中运行一个Web应用程序,由于压力过大,它最近崩溃了。我猜想100-300个人会在相似的时间访问该网站,我希望它能正常工作。

崩溃时间附近的日志是:

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

我相信这与我最近在Grails项目中添加的一些影响连接池的代码直接相关(尽管我认为这不是grails的特定问题):

maxActive = 50

maxIdle = 15

minIdle = 5

initialSize = 15

minEvictableIdleTimeMillis = 180000

timeBetweenEvictionRunsMillis = 180000

maxWait = 10000

validationQuery = "/* ping */"

我究竟做错了什么?请帮忙!谢谢。

回答:

我的错误代码使连接的存活时间比应有的更长。一旦解决了基本问题,该问题便消失了。

以上是 连接池异常:无法获得连接,池错误超时等待空闲对象 的全部内容, 来源链接: utcz.com/qa/433376.html

回到顶部