JIRA CPU usage goes high (30%) and low (5%) like Sine model for about two days after service restart

Ali Narenji July 24, 2019

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

1 answer

0 votes
brbojorque
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
August 18, 2019

Hi @Ali Narenji ,

Have you checked if the instance enabled the automated daily backup? In my experience high CPU is caused by taking an XML backup.

Try to resort to other alternatives, like snapshot and DB backups instead of the the instance doing the job.

Ali Narenji September 7, 2019

Hi @brbojorque ,

Yes, we have checked all the scheduled services, but we haven't found the problem yet!

Thanks,

Ali

Suggest an answer

Log in or Sign up to answer