Hello, After an upgrade to Tomcat 8.0.21 and (Oracle jdk1.8.0_40) I seem to be having an erratic high cpu issue, often when the server gets busy. The application was OK tomcat 7 and has not been modified since the upgrade.
I use mod_jk / apache # # workers.properties # # Define 1 real worker using ajp13 worker.list=worker1 # Set properties for worker1 (ajp13) worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009 worker.worker1.lbfactor=50 worker.worker1.socket_keepalive=1 Here are my startup options: Tomcat 7 JAVA_OPTS="-Xms128M -Xmx512m -XX:MaxPermSize=256m" Tomcat 8 (java 8 does not support MaxPermSize) JAVA_OPTS="-Xms128M -Xmx512m" If I trace the thread it seems to be related to ajp-apr-8009-Poller "ajp-apr-8009-Poller" #26 daemon prio=5 os_prio=0 tid=0x00007ffe300bd000 nid=0xc82 runnable [0x00007ffdd1fd1000] java.lang.Thread.State: RUNNABLE at sun.misc.Unsafe.unpark(Native Method) at java.util.concurrent.locks.LockSupport.unpark(LockSupport.java:141) at java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor(AbstractQueuedSynchronizer.java:662) at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1264) at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:457) at java.util.concurrent.LinkedBlockingQueue.signalNotEmpty(LinkedBlockingQueue.java:176) at java.util.concurrent.LinkedBlockingQueue.offer(LinkedBlockingQueue.java:430) at org.apache.tomcat.util.threads.TaskQueue.offer(TaskQueue.java:74) at org.apache.tomcat.util.threads.TaskQueue.offer(TaskQueue.java:31) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1361) at org.apache.tomcat.util.threads.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:161) at org.apache.tomcat.util.threads.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:141) at org.apache.tomcat.util.net.AprEndpoint.processSocket(AprEndpoint.java:896) at org.apache.tomcat.util.net.AprEndpoint$Poller.null (Redefined) at java.lang.Thread.run(Redefined) .... "ajp-apr-8009-Poller" #26 daemon prio=5 os_prio=0 tid=0x00007ffe300bd000 nid=0xc82 runnable [0x00007ffdd1fd1000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000e4a05160> (a java.util.concurrent.locks.ReentrantLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199) at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209) at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285) at java.util.concurrent.LinkedBlockingQueue.signalNotEmpty(LinkedBlockingQueue.java:172) at java.util.concurrent.LinkedBlockingQueue.offer(LinkedBlockingQueue.java:430) at org.apache.tomcat.util.threads.TaskQueue.offer(TaskQueue.java:74) at org.apache.tomcat.util.threads.TaskQueue.offer(TaskQueue.java:31) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1361) at org.apache.tomcat.util.threads.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:161) at org.apache.tomcat.util.threads.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:141) at org.apache.tomcat.util.net.AprEndpoint.processSocket(AprEndpoint.java:896) at org.apache.tomcat.util.net.AprEndpoint$Poller.null (Redefined) at java.lang.Thread.run(Redefined) Killing the thread stops the cpu, but then Tomcat does not work. Any ideas what would be causing this? Cheers Greg