If MFT Command Center or Internet Server experiences abnormal high CPU, TIBCO Support will need diagnostic information from the thread or threads that are using high CPU. To collect this information do the following:
Identify the JAVA Thread that is using the CPU: Windows: - Download and install "Process Explorer" on the Windows server where IS is using high CPU - Locate the MFT Java process in the left hand column of the "Process Explorer" - Right click on the MFT Java process and then click on "Properties" - In the "Properties" window click on the "Threads" tab (the threads tab has a column for CPU) - When the problem reoccurs, identify the thread ID (TID) that is at or near 100%
UNIX: top -H |grep java (Let this run for about 20 seconds) This will tell us the current java thread that is executing. In most cases this will point to the looping thread.
Execute jstack command to get a stack trace of all threads; : Run the following command from a command prompt to verify that jstack is working: jstack -l pid Note: Replace pid with the actual pid of the java process. The pid is displayed in a column on the main "Process Explorer" screen and also at the top of the "Properties" window. Note: The jstack command must be run with under the same user that started MFT and it must be using the same JAVA version that the MFT is executing under. Sample jstack output is shown below. : Once you have verified that the jstack command is working, press ctrl-c to stop the command Run the following command from a command prompt to save the jstack dump in a file: jstack -l pid > c:\temp\jstack.txt The jstack dump file should be about 36k.
Turn on MFT and SSH Tracing: In addition, when the problem starts happening, please enable tracing under "Administrator"/"System Configuration". : Expand the "Remote Settings" section for the IS having the problem. : Under "SSH Trace Type", put a check in both "SSH Client" and "SSH Server" boxes. : Set "SSH Trace Level" "All Messages" : Set "Trace Level" to "All Messages" : Click "Update" : Let the tracing run for a few minutes and then disable tracing.
Send us the following debugging information - The jstack.txt output - The TID that used the high CPU - The <mft install dir>\logs\trace folder - The <mft install dir>\server\logs folder
Sample jstack output: 2017-04-26 16:43:24 Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.102-b14 mixed mode):
"http-bio-7443-exec-4" #201 daemon prio=5 os_prio=0 tid=0x00007f105c014800 nid=0x476a waiting on condition [0x00007f1051068000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000c47bcab0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103) at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31) 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 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers: - None
Issue/Introduction
Process to collect details of what is causing a High CPU issue for MFT Command Center or Internet Server