How do I perform a thread dump on my system to give me further insight into what GoAnywhere MFT is doing during a specific timeframe?
Thread dumps can be a great way to troubleshoot performance issues within MFT, including jobs stuck in an active state, active sessions, or stability issues that suddenly have crept up out of nowhere. Nearly all of the examples I just listed are occasionally observed and have a number of differing causes. A thread dump can help in analyzing where the threads the application is using are being allocated. Before conducting dumps on any system, be sure to check your system has adequate disk space so your dump does not get truncated. It is recommended to create multiple thread dumps to be sure to catch the issue at hand.
To get a GoAnywhere thread dump on a Windows Server, we suggest using the "Jstack" utility that comes bundled with an Oracle JDK.
To use the Java thread dump utility “JStack” you will need to download and install a Java JDK. This is installed just like a JRE but the JDK is completely separate. Here is a link that you can use to find and download a JDK: https://www.oracle.com/java/technologie ... loads.html
Please make sure you note the location that you are installing your JDK to as you will need it later!
After installing your JDK, follow these instructions to get a thread dump:
Note: If you have more than one GoAnywhere instance running on a server, you can identify the correct instance by right-clicking the process name, select properties and then verify the Path to the executable.
1. Open Task Manager and find the reference to Commons Daemon Service Runner and expand the dropdown. Now you will need to verify that the Service name corresponds with the right instance of MFT that you need to perform a thread dump on
2. Add a "PID" column in your task manager by right clicking the headings and then make sure PID is checked
3. Note the PID number next to the Commons Daemon Service Runner task.
4. Open up a Command Prompt and run it as Administrator
5. Navigate to the JDK [Install Dir]\bin folder -- Example: C:\Program Files\Java\jdk1.8.0_191\bin
6. Run the following command (Note: the command contains a lowercase l as in larry and you do not need brackets around your PID number): jstack -l [PID] > threaddump.txt
7. If done successfully you will now have a successful threaddump.txt file created inside the JDK [Install Dir]\bin folder
8. Attach the threaddump.txt file to an email and send it to us with your case number for review.
IBM I utilizes the WRKJVMJOB command to generate thread dumps.
1. Type in the WRKJVMJOB command. This will return a list of all the JVMs on the system.
2. Find the JVM you are wanting to perform the dump on and press 5 (work with) and then enter to select the appropriate JVM.
3. Select 32 (Java dump). This make take a minute.
4. Select option 9 (Display Job Log). Here you can find the location of the dump within the file system.
From here you open the dump and analyze it to locate possible issues.
Linux also offers a couple options for obtaining thread dumps.
Kill -3 [pid of tomcat]
Without redirection, this will print the dump to catalina.out. A very large catalina.out file can cause problems with the dump. Redirect the output of the command to another file to combat this issue.
For additional information on thread dumps, please view the referenced sources below:
https://stackoverflow.com/questions/185 ... hread-dump
http://www-01.ibm.com/support/docview.w ... s8N1012559
https://helpx.adobe.com/experience-mana ... dDump.html
https://dzone.com/articles/how-analyze- ... read-dumps