On 16 July 2015 16:37:53 CEST, Robert Anderson <ranom...@gmail.com> wrote: >Hi, > >Sometimes, in moments of high traffic for our patterns (170 req/sec), >we >have a lot of threads like that: > >"ajp-apr-8009-exec-115 ^ 16/07/2015 - 11:13:37 - End of Execute" daemon >prio=10 tid=0x00002aaab5c36800 nid=0x12f9 waiting on condition >[0x000000004ddcb000] > java.lang.Thread.State: TIMED_WAITING (parking) >at sun.misc.Unsafe.park(Native Method) >- parking to wait for <0x0000000609a53198> (a >java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) >at >java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226) >at >java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082) >at >java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467) >at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:86) >at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:32) >at >java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) >at >java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) >at >java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >at >org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) >at java.lang.Thread.run(Thread.java:745) > >Thus, Tomcat hangs (all available threads stay in that state) and we >have >to restart the service. > >Server version: Apache Tomcat/7.0.63 >Server built: Jun 30 2015 08:08:33 UTC >Server number: 7.0.63.0 >OS Name: Linux >OS Version: 2.6.18-194.17.1.el5 >Architecture: amd64 >JVM Version: 1.7.0_80-b15 >JVM Vendor: Oracle Corporation > >We are using tomcat-native (APR connector) and Apache (2.2.3) as load >balancer with mod_jk. > > >server.xml > ><?xml version='1.0' encoding='utf-8'?> ><Server port="8005" shutdown="SHUTDOWN"> > <Listener className="org.apache.catalina.core.AprLifecycleListener" >SSLEngine="off" /> > <Listener className="org.apache.catalina.core.JasperListener" /> > <Listener >className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> > <Listener >className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" >/> > <Listener >className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" >/> > <GlobalNamingResources> > <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" /> > </GlobalNamingResources> > > <Service name="Catalina"> > > <Connector port="8080" protocol="HTTP/1.1" > connectionTimeout="20000" > redirectPort="8443" /> > <Connector port="8009" enableLookups="false" connectionTimeout="60000" >protocol="AJP/1.3" redirectPort="8443" /> > > <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomsrv04"> > > <Realm className="org.apache.catalina.realm.LockOutRealm"> > <Realm className="org.apache.catalina.realm.UserDatabaseRealm" > resourceName="UserDatabase" digest="SHA"/> > </Realm> > > <Host name="localhost" appBase="webapps" > unpackWARs="true" autoDeploy="true"> > ><Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" >threshold="60" interruptThreadThreshold="120" /> > </Host> > </Engine> > </Service> ></Server> > > >Any suggestions? > > >Thanks in advance. > > >Robert
Short since I'm on my phone. Connection exhaustion? Disable connection reuse or use NIO. Mark