Skip to main content
 首页 » 编程设计

connection-pooling中无法获取连接,池错误等待空闲对象超时:sakai

2024年11月24日69jackei

我正在使用 sakai 2.9.1 几次操作后,服务器停止响应并打印日志:-

2014-02-20 12:48:47,085 WARN http-bio-8080-exec-18 org.sakaiproject.db.impl.BasicSqlService - Sql.dbRead: sql: select SAKAI_SITE.SITE_ID,SAKAI_SITE.TITLE,SAKAI_SITE.TYPE,SAKAI_SITE.SHO  
RT_DESC,SAKAI_SITE.DESCRIPTION,SAKAI_SITE.ICON_URL,SAKAI_SITE.INFO_URL,SAKAI_SITE.SKIN,SAKAI_SITE.PUBLISHED,SAKAI_SITE.JOINABLE,SAKAI_SITE.PUBVIEW,SAKAI_SITE.JOIN_ROLE,SAKAI_SITE.IS_SPE 
CIAL,SAKAI_SITE.IS_USER,SAKAI_SITE.CREATEDBY,SAKAI_SITE.MODIFIEDBY,SAKAI_SITE.CREATEDON,SAKAI_SITE.MODIFIEDON,SAKAI_SITE.CUSTOM_PAGE_ORDERED,SAKAI_SITE.IS_SOFTLY_DELETED,SAKAI_SITE.SOFT 
LY_DELETED_DATE from SAKAI_SITE where ( SITE_ID = ? ) !admin  
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:104)  
        at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)  
        at org.sakaiproject.db.impl.BasicSqlService.borrowConnection(BasicSqlService.java:260)  
        at org.sakaiproject.db.impl.BasicSqlService.dbRead(BasicSqlService.java:540)  
        at org.sakaiproject.util.BaseDbFlatStorage.getResource(BaseDbFlatStorage.java:341)  
        at org.sakaiproject.util.BaseDbFlatStorage.getResource(BaseDbFlatStorage.java:321)  
        at org.sakaiproject.site.impl.DbSiteService$DbStorage.get(DbSiteService.java:236)  
        at org.sakaiproject.site.impl.BaseSiteService.getDefinedSite(BaseSiteService.java:616)  
        at org.sakaiproject.site.impl.BaseSiteService.getSite(BaseSiteService.java:702)  
        at org.sakaiproject.site.impl.BaseSiteService.getSiteVisit(BaseSiteService.java:780)  
        at org.sakaiproject.site.cover.SiteService.getSiteVisit(SiteService.java:140)  
        at org.sakaiproject.presence.tool.PresenceTool.doGet(PresenceTool.java:141)  
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)  
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)  
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)  
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
        at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:634)  
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)  
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)  
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:369)  
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)  
        at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:511)  
        at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1470)  
        at org.sakaiproject.portal.charon.handlers.PresenceHandler.doPresence(PresenceHandler.java:140)  
        at org.sakaiproject.portal.charon.handlers.PresenceHandler.doGet(PresenceHandler.java:70)  
        at org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:881)  
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)  
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)  
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)  
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
        at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:695)  
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)  
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)  
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)  
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)  
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)  
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)  
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)  
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)  
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)  
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)  
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
        at java.lang.Thread.run(Thread.java:619)  
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object  
        at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1167)  
        at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96) 

请您参考如下方法:

您可能需要增加连接池的大小。您可能还需要调整数据库的 DBMS 设置。以下是您将放入 Sakai 配置文件(通常为 sakai.properties)中以控制数据库池的设置。

# The initial number of connections that are created when the pool is started 
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="31585f584558505d62584b54715b504750491f42405d1f7350425475504550625e44435254" rel="noreferrer noopener nofollow">[email protected]</a>=10 
# The maximum number of active connections that can be allocated from this pool at the same time, or zero for no limit. 
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="026f637a4361766b746742686374637a2c71736e2c4063716746637663516d77706167" rel="noreferrer noopener nofollow">[email protected]</a>=50 
# The maximum number of active connections that can remain idle in the pool, without extra ones being released, or zero for no limit. 
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bbd6dac3f2dfd7defbd1dacddac395c8cad795f9dac8deffdacfdae8d4cec9d8de" rel="noreferrer noopener nofollow">[email protected]</a>=5 
# The minimum number of active connections that can remain idle in the pool, without extra ones being created, or 0 to create none. 
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="503d393e19343c35103a312631287e23213c7e1231233514312431033f25223335" rel="noreferrer noopener nofollow">[email protected]</a>=5