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

Reply via email to