Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to avoid minutes delay during Tomcat startup
    text
    copied!<p>We're experiencing a significant delay during server startup of minutes on a number of production servers but cannot reproduce this in a test environment. Does anyone have any suggestions on how to debug or fix this? It happens on both Tomcat 6 and Tomcat 7</p> <p>Our setup is Tomcat 7 Spring 3.1.2 Hibernate 4.1.7 BoneCP 0.7.1 Mysql connection 5.1.23 New Relic</p> <p>It <strong>seems</strong> related to Bone CP</p> <pre><code>[MSA] DEBUG [2013-02-18 14:58:34,903] DefaultListableBeanFactory.invokeInitMethods(1498) | Invoking afterPropertiesSet() on bean with name 'dataSource' [MSA] DEBUG [2013-02-18 14:58:34,919] BoneCPDataSource.maybeInit(148) | JDBC URL = jdbc:mysql://1.1.1.1:3306/db_prod?createDatabaseIfNotExist=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf-8&amp;amp;sessionVariables=FOREIGN_KEY_CHECKS=0, Username = xyz, partitions = 3, max (per partition) = 30, min (per partition) = 10, helper threads = 3, idle max age = 3 min, idle test period = 2 min [MSA] DEBUG [2013-02-18 15:01:11,474] DefaultListableBeanFactory.doGetBean(245) | Returning cached instance of singleton bean 'managerTx' </code></pre> <p>Our Bone CP setup is as follows</p> <pre><code>&lt;bean id="dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy"&gt; &lt;property name="targetDataSource"&gt; &lt;ref local="mainDataSource" /&gt; &lt;/property&gt; &lt;/bean&gt; &lt;bean id="mainDataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"&gt; &lt;property name="driverClass" value="${jdbc.driverClassName}"/&gt; &lt;property name="jdbcUrl" value="${jdbc.url}"/&gt; &lt;property name="username" value="${jdbc.username}"/&gt; &lt;property name="password" value="${jdbc.password}"/&gt; &lt;property name="idleMaxAgeInMinutes" value="3"/&gt; &lt;property name="idleConnectionTestPeriodInMinutes" value="2"/&gt; &lt;property name="maxConnectionsPerPartition" value="30"/&gt; &lt;property name="minConnectionsPerPartition" value="10"/&gt; &lt;property name="partitionCount" value="3"/&gt; &lt;property name="acquireIncrement" value="2"/&gt; &lt;property name="statementsCacheSize" value="100"/&gt; &lt;property name="releaseHelperThreads" value="3"/&gt; &lt;/bean&gt; </code></pre> <p>Based on Mindas suggestion. Here's a stacktrace of what's happening during the wait</p> <pre><code>"pool-3-thread-1" prio=10 tid=0x00007fd26c004000 nid=0x5c7e runnable [0x00007fd2c4722000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:150) at java.net.SocketInputStream.read(SocketInputStream.java:121) at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114) at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:161) at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189) - locked &lt;0x00000000ccf12490&gt; (a com.mysql.jdbc.util.ReadAheadInputStream) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3049) at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:597) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1084) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283) - locked &lt;0x00000000ccf04310&gt; (a com.mysql.jdbc.JDBC4Connection) at com.mysql.jdbc.ConnectionImpl.&lt;init&gt;(ConnectionImpl.java:822) at com.mysql.jdbc.JDBC4Connection.&lt;init&gt;(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) at java.sql.DriverManager.getConnection(DriverManager.java:579) at java.sql.DriverManager.getConnection(DriverManager.java:221) at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:256) at com.jolbox.bonecp.ConnectionHandle.obtainInternalConnection(ConnectionHandle.java:211) at com.jolbox.bonecp.ConnectionHandle.&lt;init&gt;(ConnectionHandle.java:170) at com.jolbox.bonecp.BoneCP.&lt;init&gt;(BoneCP.java:371) at com.jolbox.bonecp.BoneCPDataSource.maybeInit(BoneCPDataSource.java:150) at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:112) at org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy.afterPropertiesSet(LazyConnectionDataSourceProxy.java:163) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) - locked &lt;0x00000000dc56d780&gt; (a java.util.concurrent.ConcurrentHashMap) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) - locked &lt;0x00000000dc56d780&gt; (a java.util.concurrent.ConcurrentHashMap) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload