Dear Community,
We are using JIRA Data Center. Recently, we are facing an issue which decreases the JIRA performance for about two days of usage after a service restart.
The CPU usage goes up (~30%) and down (~5%) regularly during the usage of JIRA like Sine model. This model of CPU usage takes about two days. After that, every thing gets normal and CPU usage remains below 10%.
We generated two thread dumps. The first one is generated when CPU usage is ~30%, and the second one when it is ~5%.
We compared two dumps, and it realized that the following thread has different statuses.
High CPU usage:
"NodeReindexServiceThread:thread-1" #183 prio=5 os_prio=0 tid=0x00007f231e230000 nid=0x5d34 runnable [0x00007f23d085e000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000005c484ee78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Low CPU usage:
"NodeReindexServiceThread:thread-1" #183 prio=5 os_prio=0 tid=0x00007f231e230000 nid=0x5d34 waiting on condition [0x00007f23d085e000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000005c484ee78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
The thread is runnable when the CPU usage is high, on the other side, the thread is waiting on condition when the CPU usage is low.
Have you faced the similar issue?
Many Thanks,
Ali