-
Type:
Suggestion
-
Resolution: Unresolved
-
None
-
Component/s: Server - Performance
-
None
Summary
Enabling the "PrintExtendedThreadInfo" parameter by default when using Java 11 would allow us to see allocated memory for each thread, when thread dumps are taken.
Example
On Confluence 7.9.0, using the default Java.
Before enabling the flag:
"http-nio-8090-exec-1" #63 daemon prio=5 os_prio=0 cpu=0.22ms elapsed=59.14s tid=0x00007fb5809f1000 nid=0x2fd3 waiting on condition [0x00007fb482ef1000] java.lang.Thread.State: WAITING (parking) at jdk.internal.misc.Unsafe.park(java.base@11.0.7/Native Method) - parking to wait for <0x00000000e2e005e8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(java.base@11.0.7/Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.7/Unknown Source) at java.util.concurrent.LinkedBlockingQueue.take(java.base@11.0.7/Unknown Source) at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:107) at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33) at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.7/Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.7/Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.7/Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(java.base@11.0.7/Unknown Source)
After enabling the flag:
"http-nio-8090-exec-10" #85 daemon prio=5 os_prio=0 cpu=0.13ms elapsed=53.53s allocated=32B defined_classes=0 tid=0x00007fd8f4475800 nid=0x3135 waiting on condition [0x00007fd7db0f3000] java.lang.Thread.State: WAITING (parking) at jdk.internal.misc.Unsafe.park(java.base@11.0.7/Native Method) - parking to wait for <0x00000000ef9240d8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(java.base@11.0.7/Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.7/Unknown Source) at java.util.concurrent.LinkedBlockingQueue.take(java.base@11.0.7/Unknown Source) at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:107) at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33) at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.7/Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.7/Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.7/Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(java.base@11.0.7/Unknown Source)
This additional information would help support diagnose performance issues more easily.
Suggestion
If we can add this parameter to our default setenv.sh / .bat files, we could enable this functionality by default:
-XX:+PrintExtendedThreadInfo
- mentioned in
-
Page Loading...