Analyzing High CPU Usage by J2EE of SAP XI System
If you have found the Adapter Engine processing messages very slowly or not responding, one of the first thing you might do is check the CPU usage. If the server node is found to be using unusually high CPU, follow these steps to troubleshoot the problem (assuming that you are using AIX).
1. Collect information on the CPU used by individual threads
Call the following command to take a snapshot of the CPU usage of individual threads
ps -mp <PID> -o THREAD > threadscpu`date`.txt
<PID> should be the process ID of the server node.
The sixth column of the output shows the thread's CPU usage. Note that this column can show values more than 100.
2. Take thread dump or stack trace using jcmon
Follow the linked post which contains the detailed steps to take a thread dump
3. Repeat the steps 1 and 2 3-5 times
Repeat steps 1 and 2 3-5 times with a time interval of about 30 sec between each pair.
4. Match the thread IDs from ps command to the thread IDs in the thread dump
ps -mp shows the thread IDs (fourth column) in decimal values whereas the stack trace shows the thread IDs in hexadecimal. Convert the TID from CPU usage output to hexadecimal. You can use google to do the calculation for you. For example if TID is 602357, google search for "602357 in hexadecimal". The result is 0x930F5.
Search for the hexadecimal thread ID in the stack trace. (Ex: search for 930F5 instead of 0x930F5).
The matching line will look something like this:
3XMTHREADINFO "Thread-3" (TID:0x00000001161D3000, sys_thread_t:0x000000011613B710, state:MW, native ID:0x00000000000930F5) prio=5
5. Analyze stack trace
Now open the stack trace with a thread dump viewer to see which method is being used when the CPU usage is high. Check for SAP notes with known problems on this method. If it is a UDF look for tuning options. JARM is also a known cause for increased CPU usage.
Comments
Post a Comment