On 1/6/17 3:44 PM, Jerry Malcolm wrote: > On 1/6/2017 4:30 PM, Christopher Schultz wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA256 >> >> Jerry, >> >> On 1/6/17 10:35 AM, Jerry Malcolm wrote: >>> I'm getting "too many connections" errors. >> Where? >> >> Can you provide an exact error message and, better yet, a stack >> trace? >> >>> I'm pretty sure I am configured with enough connections that I >>> shouldn't run out. So I'm assuming I'm leaving some connections >>> open. >> That's a good assumption. >> >>> I have LogAbandoned="true" in my jdbc resource statements. The >>> doc says TC will log a stack trace of abandoned connections. But I >>> don't see any stack traces. Would they be in stderr, stdout, >>> catalina log? Or is it that I'm actually not getting any >>> abandoned? >> Which db connection pool are you using? Standard (DBCP-based) or >> tomcat-pool? A full (sanitized) <Resource> configuration would help. >> >> - -chris >> > Chris, > Stack trace follows. It looks like it may be mySQL that's > rejecting the connection. But even if that's the case, it's > probably because I'm not closing some connections, which should > still generate a logAbandoned stack trace, correct? I believe I'm > using dbcp. Not doing anything fancy... Just defining data source > resources in the context file: > > <Resource testOnBorrow="true" validationQuery="SELECT 1" > name="jdbc/cis" auth="Container" type="javax.sql.DataSource" > maxTotal="100" maxIdle="30" maxWaitMillis="10000" > removeAbandoned="true" removeAbandonedTimeout="60" > logAbandoned="true" username="xxxxxxxx" password="xxxxxxx" > driverClassName="com.mysql.jdbc.Driver" > url="jdbc:mysql://localhost:3306/xxxxxxxxxx" /> In dbcp 2, the "removeAbandoned" config option was replaced by removedAbondonedOnBorrow and removeAbandonedOnMaintenance. You need to set one of these to true the get abandoned connection cleanup to work. See [1].
|Phil [1] http://commons.apache.org/proper/commons-dbcp/configuration.html ||| > > > > java.sql.SQLException: Cannot create PoolableConnectionFactory > (Data source rejected establishment of connection, message from > server: "Too many connections") > at > org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2195) > at > org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1945) > at > org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1412) > at > jwm.servletdb.ServletDBData.getInstance(ServletDBData.java:139) > at > jwm.servletdb.ServletDBData.getInstance(ServletDBData.java:93) > at > jwm.servletdb.ServletDBData.getInstance(ServletDBData.java:62) > at > org.apache.jsp.jsp.login.login_005fv2_jsp._jspService(login_005fv2_jsp.java:450) > at > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:725) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) > > at > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:725) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721) > at > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466) > at > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391) > at > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318) > at > org.apache.catalina.authenticator.FormAuthenticator.forwardToLoginPage(FormAuthenticator.java:411) > at > org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:256) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) > at > org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) > at > org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:291) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) > at > org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:831) > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556) > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) > at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.lang.Thread.run(Unknown Source) > Caused by: > com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: > Data source rejected establishment of connection, message from > server: "Too many connections" > at > sun.reflect.GeneratedConstructorAccessor97.newInstance(Unknown > Source) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown > Source) > at java.lang.reflect.Constructor.newInstance(Unknown Source) > at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) > at com.mysql.jdbc.Util.getInstance(Util.java:386) > at > com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) > at > com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) > at > com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) > at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1128) > at > com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336) > at > com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369) > at > com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153) > at > com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792) > at > com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) > at > sun.reflect.GeneratedConstructorAccessor20.newInstance(Unknown > Source) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown > Source) > at java.lang.reflect.Constructor.newInstance(Unknown Source) > at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) > at > com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) > at > com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) > at > org.apache.tomcat.dbcp.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) > at > org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:204) > at > org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2205) > at > org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2191) > ... 38 more > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org