Re: Database connection causes slow startup
Thanks for your help. I solved the problem. It turns out the problem was in that fastConnectionFailover option. I disabled that, and it now starts up in 46 seconds. On Wed, Nov 16, 2011 at 2:23 PM, Christopher Schultz ch...@christopherschultz.net wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Ben, On 11/16/11 2:44 PM, Ben Gladstone wrote: Resource name=jdbc/PortalDb auth=Container type=oracle.jdbc.pool.OracleDataSource connectionCachingEnabled=true description=FCF Datasource driverClassName=oracle.jdbc.OracleDriver factory=oracle.jdbc.pool.OracleDataSourceFactory fastConnectionFailoverEnabled=true onsConfigStr=nodes=PRIVATE implicitCachingEnabled=true connectionCacheProperties=(InitialLimit=10, MinLimit=10, MaxLimit=150, ConnectionWaitTimeout=40, AbandonedConnectionTimeout=40, TimeToLiveTimeout=90) connectionCacheName=portal_connection_pool user=PRIVATE password=PRIVATE url=jdbc:oracle:thin:@ (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PRIVATE)(PORT=1521))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PRIVATE)) / Note that you are not using Tomcat's connection pooling: you are using Oracle's connection pooling because you specified the factory attribute and told Oracle to create DataSource objects for you. Try setting type=javax.sql.DataSource and removing the factory attribute to use Tomcat's connection pool (which is commons-dbcp). If Tomcat takes 7 minutes to start up, that sounds like plenty of time to take a thread dump to see what's going on. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG/MacGPG2 v2.0.17 (Darwin) Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk7EN+sACgkQ9CaO5/Lv0PBIKQCfXNOu9MyIbT4LTkXm2QxE4Vz3 NO8AmwZgLbVKc8vHyKCsqvK1mhIp/GNC =FhEO -END PGP SIGNATURE- - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: Database connection causes slow startup
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Ben, On 11/17/11 1:41 PM, Ben Gladstone wrote: Thanks for your help. I solved the problem. It turns out the problem was in that fastConnectionFailover option. I disabled that, and it now starts up in 46 seconds. But now they won't fail-over fast! ;) - -chris -BEGIN PGP SIGNATURE- Version: GnuPG/MacGPG2 v2.0.17 (Darwin) Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk7Fa3wACgkQ9CaO5/Lv0PA+LwCdHyp5PHno16IHaLkNg5alsD8n YmoAoJcBU+XuanyGQFcoMv8wLLygq+So =sVq4 -END PGP SIGNATURE- - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: Database connection causes slow startup
On Wed, 2011-11-16 at 11:07 -0800, Ben Gladstone wrote: I've attached my server.xml, context.xml, and catalina.out. I don't believe that you can attach files to the list. You'll need to copy and paste the information in your email. Now, it takes around 7 minutes to start. This seems long, but it really depends on how many connections you've configured the pool to initially make and how long it takes to make each connection. Where are you defining your DataSources and what do the definitions look like? Dan
Re: Database connection causes slow startup
If I'm not mistaken, the data sources are defined in server.xml. Let's try this again. Here's server.xml: ?xml version='1.0' encoding='utf-8'? !-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the License); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -- !-- Note: A Server is not itself a Container, so you may not define subcomponents such as Valves at this level. Documentation at /docs/config/server.html -- Server port=8005 shutdown=SHUTDOWN !--APR library loader. Documentation at /docs/apr.html -- Listener className=org.apache.catalina.core.AprLifecycleListener SSLEngine=on / !--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -- Listener className=org.apache.catalina.core.JasperListener / !-- Prevent memory leaks due to use of particular java/javax APIs-- Listener className=org.apache.catalina.core.JreMemoryLeakPreventionListener / !-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -- Listener className=org.apache.catalina.mbeans.ServerLifecycleListener / Listener className=org.apache.catalina.mbeans.GlobalResourcesLifecycleListener / !-- Global JNDI resources Documentation at /docs/jndi-resources-howto.html -- GlobalNamingResources !-- Editable user database that can also be used by UserDatabaseRealm to authenticate users -- Resource name=UserDatabase auth=Container type=org.apache.catalina.UserDatabase description=User database that can be updated and saved factory=org.apache.catalina.users.MemoryUserDatabaseFactory pathname=conf/tomcat-users.xml / Resource name=jdbc/PortalDb auth=Container type=oracle.jdbc.pool.OracleDataSource connectionCachingEnabled=true description=FCF Datasource driverClassName=oracle.jdbc.OracleDriver factory=oracle.jdbc.pool.OracleDataSourceFactory fastConnectionFailoverEnabled=true onsConfigStr=nodes=PRIVATE implicitCachingEnabled=true connectionCacheProperties=(InitialLimit=10, MinLimit=10, MaxLimit=150, ConnectionWaitTimeout=40, AbandonedConnectionTimeout=40, TimeToLiveTimeout=90) connectionCacheName=portal_connection_pool user=PRIVATE password=PRIVATE url=jdbc:oracle:thin:@ (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PRIVATE)(PORT=1521))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PRIVATE)) / Resource name=jdbc/WarehouseDB auth=Container type=oracle.jdbc.pool.OracleDataSource driverClassName=oracle.jdbc.OracleDriver factory=oracle.jdbc.pool.OracleDataSourceFactory connectionCachingEnabled=true implicitCachingEnabled=true connectionCacheProperties=(InitialLimit=3, MinLimit=3, MaxLimit=100, ConnectionWaitTimeout=40, AbandonedConnectionTimeout=40, TimeToLiveTimeout=90) connectionCacheName=warehouse_connection_pool user=PRIVATE password=PRIVATE url=jdbc:oracle:thin:@PRIVATE:1521:PRIVATE / /GlobalNamingResources !-- A Service is a collection of one or more Connectors that share a single Container Note: A Service is not itself a Container, so you may not define subcomponents such as Valves at this level. Documentation at /docs/config/service.html -- Service name=Catalina !--The connectors can use a shared executor, you can define one or more named thread pools-- !-- Executor name=tomcatThreadPool namePrefix=catalina-exec- maxThreads=150 minSpareThreads=4/ -- !-- A Connector represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 -- Connector port=8080 protocol=HTTP/1.1 connectionTimeout=2 redirectPort=8443 / !-- A Connector using the shared thread pool-- !-- Connector executor=tomcatThreadPool port=8080 protocol=HTTP/1.1 connectionTimeout=2
Re: Database connection causes slow startup
Resource name=jdbc/PortalDb auth=Container type=oracle.jdbc.pool.OracleDataSource connectionCachingEnabled=true description=FCF Datasource driverClassName=oracle.jdbc.OracleDriver factory=oracle.jdbc.pool.OracleDataSourceFactory fastConnectionFailoverEnabled=true onsConfigStr=nodes=PRIVATE implicitCachingEnabled=true connectionCacheProperties=(InitialLimit=10, MinLimit=10, MaxLimit=150, ConnectionWaitTimeout=40, AbandonedConnectionTimeout=40, TimeToLiveTimeout=90) connectionCacheName=portal_connection_pool user=PRIVATE password=PRIVATE url=jdbc:oracle:thin:@ (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PRIVATE)(PORT=1521))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PRIVATE)) / Resource name=jdbc/WarehouseDB auth=Container type=oracle.jdbc.pool.OracleDataSource driverClassName=oracle.jdbc.OracleDriver factory=oracle.jdbc.pool.OracleDataSourceFactory connectionCachingEnabled=true implicitCachingEnabled=true connectionCacheProperties=(InitialLimit=3, MinLimit=3, MaxLimit=100, ConnectionWaitTimeout=40, AbandonedConnectionTimeout=40, TimeToLiveTimeout=90) connectionCacheName=warehouse_connection_pool user=PRIVATE password=PRIVATE url=jdbc:oracle:thin:@PRIVATE:1521:PRIVATE / I see an initial limit of 10 for the first DataSource and 3 for the second DataSource. That seems like it should happen pretty quick. A couple thoughts... 1.) Do you have any applications deployed to the server? If so, perhaps it is an application which is causing the startup to take so long. Have you tried starting Tomcat without any applications deployed? If so, how long does it take to startup? 2.) Try making a test connection to your database outside of Tomcat from the same machine. Does the connection take a long time to setup? Dan
Re: Database connection causes slow startup
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Ben, On 11/16/11 2:44 PM, Ben Gladstone wrote: Resource name=jdbc/PortalDb auth=Container type=oracle.jdbc.pool.OracleDataSource connectionCachingEnabled=true description=FCF Datasource driverClassName=oracle.jdbc.OracleDriver factory=oracle.jdbc.pool.OracleDataSourceFactory fastConnectionFailoverEnabled=true onsConfigStr=nodes=PRIVATE implicitCachingEnabled=true connectionCacheProperties=(InitialLimit=10, MinLimit=10, MaxLimit=150, ConnectionWaitTimeout=40, AbandonedConnectionTimeout=40, TimeToLiveTimeout=90) connectionCacheName=portal_connection_pool user=PRIVATE password=PRIVATE url=jdbc:oracle:thin:@ (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PRIVATE)(PORT=1521))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PRIVATE)) / Note that you are not using Tomcat's connection pooling: you are using Oracle's connection pooling because you specified the factory attribute and told Oracle to create DataSource objects for you. Try setting type=javax.sql.DataSource and removing the factory attribute to use Tomcat's connection pool (which is commons-dbcp). If Tomcat takes 7 minutes to start up, that sounds like plenty of time to take a thread dump to see what's going on. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG/MacGPG2 v2.0.17 (Darwin) Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk7EN+sACgkQ9CaO5/Lv0PBIKQCfXNOu9MyIbT4LTkXm2QxE4Vz3 NO8AmwZgLbVKc8vHyKCsqvK1mhIp/GNC =FhEO -END PGP SIGNATURE- - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org