So while working on reproducing tomcat webapp hang as earlier discussed, a different tomcat serving up a single webapp on same box also stopped responding, jvm for this tomcat is still running but when trying to reach it via browser I get error page of unable to connect.
Thread dumps for both problem tomcats seem to exhibit same core problem, at least in my analysis. I would really appreciate your feedback on my analysis of the situation and things anyone thinks I may be over looking. On both tomcat jvms when they get to the point of locking up, thread dumps show that almost all ajp/exec threads are blocked and there are either one or two ajp/exec threads runnable. The blocked threads are waiting for locks on an object held by one of the threads in runnable state. The commonality between the two that really has to be the root of the problem, in my estimation, is that on both tomcats the runnable threads are sitting on socketRead0 to our database and not budging, just stuck in runnable and never getting to the point of releasing their locks... Potential networking issue with that socket read? Take a look at the thread dump below, I've shortened a lot of the stacktraces - Thanks for any thoughts on the matter AJP Threads 3, 5, 7,12 java.lang.Thread.State: BLOCKED (on object monitor) at com.acompany.view.backing.cact.product.ProductsView.setCustomerData(ProductsView.java:57) - waiting to lock <0x00002aaad303cad0> (a com.acompany.model.customer.CustomerData) at com.acompany.view.backing.cact.product.Products.<init>(Products.java:101) AJP Threads 9,10,11 java.lang.Thread.State: BLOCKED (on object monitor) at com.acompany.view.backing.cact.membership.MembershipsView.setCustomerData(MembershipsView.java:58) - waiting to lock <0x00002aaad303cad0> (a com.acompany.model.customer.CustomerData) at com.acompany.view.backing.cact.membership.Memberships.<init>(Memberships.java:99) AJP Threads 4, 6, 8 java.lang.Thread.State: BLOCKED (on object monitor) at com.acompany.view.backing.cact.meeting.MeetingsView.setCustomerData(MeetingsView.java:66) - waiting to lock <0x00002aaad303cad0> (a com.acompany.model.customer.CustomerData) at com.acompany.view.backing.cact.meeting.Meetings.<init>(Meetings.java:135) AJP threads 13, 14, 15, 16 - WAITING on object monitor - probably what they're supposed to be doing java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaad34cdbd8> (a org.apache.tomcat.util.net.AprEndpoint$Worker) at java.lang.Object.wait(Object.java:485) at org.apache.tomcat.util.net.AprEndpoint$Worker.await(AprEndpoint.java:1540) - locked <0x00002aaad34cdbd8> (a org.apache.tomcat.util.net.AprEndpoint$Worker) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1565) at java.lang.Thread.run(Thread.java:619) AJP thread 2 - RUNNABLE - sitting on socketRead0 "ajp-9011-2" daemon prio=10 tid=0x000000005e342800 nid=0x3f0a runnable [0x0000000040f07000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at oracle.net.ns.Packet.receive(Packet.java:293) at oracle.net.ns.DataPacket.receive(DataPacket.java:92) at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:174) at oracle.net.ns.NetInputStream.read(NetInputStream.java:119) at oracle.net.ns.NetInputStream.read(NetInputStream.java:94) at oracle.net.ns.NetInputStream.read(NetInputStream.java:79) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:112) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:73) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1040) at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1016) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:588) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791) at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1187) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3386) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3430) - locked <0x00002aaacf0584b0> (a oracle.jdbc.driver.T4CConnection) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120) at org.hibernate.loader.Loader.getResultSet(Loader.java:1272) at org.hibernate.loader.Loader.doQuery(Loader.java:391) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218) at org.hibernate.loader.Loader.loadEntity(Loader.java:1345) at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:116) at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:101) My thoughts are this is the thread causing all the backup AJP Thread 1 RUNNABLE, sitting on socketRead0, Has locked <0x00002aaad303cad0> (a com.acompany.model.customer.CustomerData) which almost all other threads are blocked waiting for lock on java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at oracle.net.ns.Packet.receive(Packet.java:293) at oracle.net.ns.DataPacket.receive(DataPacket.java:92) at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:174) at oracle.net.ns.NetInputStream.read(NetInputStream.java:119) at oracle.net.ns.NetInputStream.read(NetInputStream.java:94) at oracle.net.ns.NetInputStream.read(NetInputStream.java:79) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:112) at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:73) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1040) at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1016) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:588) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791) at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1187) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3386) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3430) - locked <0x00002aaad0bbd688> (a oracle.jdbc.driver.T4CConnection) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120) at org.hibernate.loader.Loader.getResultSet(Loader.java:1272) at org.hibernate.loader.Loader.doQuery(Loader.java:391) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218) at org.hibernate.loader.Loader.loadCollection(Loader.java:1434) at org.hibernate.loader.collection.OneToManyLoader.initialize(OneToManyLoader.java:111) at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:488) at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60) at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1430) at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:280) at org.hibernate.engine.PersistenceContext.initializeNonLazyCollections(PersistenceContext.java:796) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223) at org.hibernate.loader.Loader.doList(Loader.java:1593) at org.hibernate.loader.Loader.list(Loader.java:1577) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74) at org.springframework.orm.hibernate3.HibernateTemplate$32.doInHibernate(HibernateTemplate.java:815) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:312) at org.springframework.orm.hibernate3.HibernateTemplate.findByNamedQuery(HibernateTemplate.java:806) at com.acompany.model.dao.hibernateimpl.OrderDAOImpl.loadOrders(OrderDAOImpl.java:46) at com.acompany.model.service.impl.OrderServiceImpl.loadOrders(OrderServiceImpl.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:57) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174) at $Proxy33.loadOrders(Unknown Source) at com.acompany.model.customer.CustomerOrderData.load(CustomerOrderData.java:254) at com.acompany.model.customer.CustomerOrderData.getCurrentOrders(CustomerOrderData.java:153) at com.acompany.model.customer.CustomerOrderData.getCurrentOrderSize(CustomerOrderData.java:131) at com.acompany.view.backing.cact.product.ProductsView.buildNodeLists(ProductsView.java:411) at com.acompany.view.backing.cact.product.ProductsView.refreshOrders(ProductsView.java:150) at com.acompany.view.backing.cact.product.ProductsView.setCustomerData(ProductsView.java:68) - locked <0x00002aaad303cad0> (a com.acompany.model.customer.CustomerData) at com.acompany.view.backing.cact.product.Products.<init>(Products.java:101) at sun.reflect.GeneratedConstructorAccessor180.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at java.beans.Beans.instantiate(Beans.java:204) at java.beans.Beans.instantiate(Beans.java:48) at com.sun.faces.config.ManagedBeanFactory.newInstance(ManagedBeanFactory.java:223) "ajp-9011-Acceptor-0" daemon prio=10 tid=0x00002aab344bb800 nid=0x3efb runnable [0x0000000042c32000] java.lang.Thread.State: RUNNABLE at org.apache.tomcat.jni.Socket.accept(Native Method) at org.apache.tomcat.util.net.AprEndpoint$Acceptor.run(AprEndpoint.java:1169) at java.lang.Thread.run(Thread.java:619) "ajp-9011-CometPoller-0" daemon prio=10 tid=0x00002aab34ae4000 nid=0x3efa in Object.wait() [0x0000000042b31000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaad0f5d530> (a org.apache.tomcat.util.net.AprEndpoint$Poller) at java.lang.Object.wait(Object.java:485) at org.apache.tomcat.util.net.AprEndpoint$Poller.run(AprEndpoint.java:1336) - locked <0x00002aaad0f5d530> (a org.apache.tomcat.util.net.AprEndpoint$Poller) at java.lang.Thread.run(Thread.java:619) "ajp-9011-Poller-0" daemon prio=10 tid=0x00002aab3426d000 nid=0x3ef9 runnable [0x0000000042a30000] java.lang.Thread.State: RUNNABLE at org.apache.tomcat.jni.Poll.poll(Native Method) at org.apache.tomcat.util.net.AprEndpoint$Poller.run(AprEndpoint.java:1373) at java.lang.Thread.run(Thread.java:619) "http-8082-Acceptor-0" daemon prio=10 tid=0x00002aab3432a000 nid=0x3ef8 runnable [0x000000004292f000] java.lang.Thread.State: RUNNABLE at org.apache.tomcat.jni.Socket.accept(Native Method) at org.apache.tomcat.util.net.AprEndpoint$Acceptor.run(AprEndpoint.java:1169) at java.lang.Thread.run(Thread.java:619) "http-8082-Sendfile-0" daemon prio=10 tid=0x00002aab343e3800 nid=0x3ef7 in Object.wait() [0x000000004282e000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaad0f5dc58> (a org.apache.tomcat.util.net.AprEndpoint$Sendfile) at java.lang.Object.wait(Object.java:485) at org.apache.tomcat.util.net.AprEndpoint$Sendfile.run(AprEndpoint.java:1805) - locked <0x00002aaad0f5dc58> (a org.apache.tomcat.util.net.AprEndpoint$Sendfile) at java.lang.Thread.run(Thread.java:619) "http-8082-CometPoller-0" daemon prio=10 tid=0x00002aab3450f800 nid=0x3ef6 in Object.wait() [0x000000004272d000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaad0f5dfb8> (a org.apache.tomcat.util.net.AprEndpoint$Poller) at java.lang.Object.wait(Object.java:485) at org.apache.tomcat.util.net.AprEndpoint$Poller.run(AprEndpoint.java:1336) - locked <0x00002aaad0f5dfb8> (a org.apache.tomcat.util.net.AprEndpoint$Poller) at java.lang.Thread.run(Thread.java:619) "http-8082-Poller-0" daemon prio=10 tid=0x00002aab3448e800 nid=0x3ef5 in Object.wait() [0x000000004262c000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaad0f5e250> (a org.apache.tomcat.util.net.AprEndpoint$Poller) at java.lang.Object.wait(Object.java:485) at org.apache.tomcat.util.net.AprEndpoint$Poller.run(AprEndpoint.java:1336) - locked <0x00002aaad0f5e250> (a org.apache.tomcat.util.net.AprEndpoint$Poller) at java.lang.Thread.run(Thread.java:619) "ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon prio=10 tid=0x00002aab34b11000 nid=0x3ef4 waiting on condition [0x000000004252b000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1579) at java.lang.Thread.run(Thread.java:619) "GC Daemon" daemon prio=10 tid=0x00002aab340fa800 nid=0x3ee2 in Object.wait() [0x000000004119b000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaace2253a0> (a sun.misc.GC$LatencyLock) at sun.misc.GC$Daemon.run(GC.java:100) - locked <0x00002aaace2253a0> (a sun.misc.GC$LatencyLock) "Low Memory Detector" daemon prio=10 tid=0x000000005d1d4800 nid=0x3ee0 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "CompilerThread1" daemon prio=10 tid=0x000000005d1d2800 nid=0x3edf waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x000000005d1cc800 nid=0x3ede waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x000000005d1ca800 nid=0x3edd waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=10 tid=0x000000005d1a6000 nid=0x3edc in Object.wait() [0x000000004242a000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaace2256f8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118) - locked <0x00002aaace2256f8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x000000005d1a4000 nid=0x3edb in Object.wait() [0x0000000042329000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaace225390> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116) - locked <0x00002aaace225390> (a java.lang.ref.Reference$Lock) "main" prio=10 tid=0x000000005d142800 nid=0x3ed5 runnable [0x0000000041e23000] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390) - locked <0x00002aaad08d9170> (a java.net.SocksSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.apache.catalina.core.StandardServer.await(StandardServer.java:389) at org.apache.catalina.startup.Catalina.await(Catalina.java:662) at org.apache.catalina.startup.Catalina.start(Catalina.java:614) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) "VM Thread" prio=10 tid=0x000000005d19f800 nid=0x3eda runnable "GC task thread#0 (ParallelGC)" prio=10 tid=0x000000005d155800 nid=0x3ed6 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x000000005d157800 nid=0x3ed7 runnable "GC task thread#2 (ParallelGC)" prio=10 tid=0x000000005d159000 nid=0x3ed8 runnable "GC task thread#3 (ParallelGC)" prio=10 tid=0x000000005d15b000 nid=0x3ed9 runnable "VM Periodic Task Thread" prio=10 tid=0x000000005d1d7000 nid=0x3ee1 waiting on condition JNI global references: 2132 Heap PSYoungGen total 248832K, used 12080K [0x00002aab1e210000, 0x00002aab2e210000, 0x00002aab2e210000) eden space 234560K, 5% used [0x00002aab1e210000,0x00002aab1eddc240,0x00002aab2c720000) from space 14272K, 0% used [0x00002aab2d420000,0x00002aab2d420000,0x00002aab2e210000) to space 13312K, 0% used [0x00002aab2c720000,0x00002aab2c720000,0x00002aab2d420000) PSOldGen total 1310720K, used 93616K [0x00002aaace210000, 0x00002aab1e210000, 0x00002aab1e210000) object space 1310720K, 7% used [0x00002aaace210000,0x00002aaad3d7c178,0x00002aab1e210000) PSPermGen total 524288K, used 109830K [0x00002aaaae210000, 0x00002aaace210000, 0x00002aaace210000) object space 524288K, 20% used [0x00002aaaae210000,0x00002aaab4d51a20,0x00002aaace210000) Jason