Am 3. Mai 2015 12:25:53 MESZ, schrieb Greg Huber <gregh3...@gmail.com>: >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"
I believe java 8 combines the permgen into the heap space, so it is possible, that you run out of space now that you use java 8. Use jstat, jvisualvm or jconsole to look at your gc cycles. They can consume a lot of cpu. > >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) This thread does nothing. > 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) This thread does nothing, either. > - 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? You might look for other threads, that do something. I would be especially suspicious about array resizing operations. Regards Felix > > >Cheers Greg --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org