The Wily Transaction trace can be used to trace expensive steps that were noticed during the mapping or module processing. The transaction trace will allow you to drill down further into Java performance problems and to distinguish if it is a pure coding problem or caused by a look-up to a remote system or a slow connection to the local database.
The Wily Transaction trace can be used to trace all steps that exceed a specific duration on the Java stack. If a user is known (for example, for SAP Enterprise Portal) the tracing can be restricted to a specific user. In PI, if you encounter a module that lasts several seconds then you can restrict the tracing as shown below.
Note: Starting the Transaction Trace increases the data collection on the satellite system (PI) and is therefore only recommended in productive environment for troubleshooting purposes.
With the selection above the trace will run for 10 minutes (this is the maximum and it can be canceled earlier) and will trace all steps exceeding 3 seconds for the agents of the PI system. If such long-running steps are found then a new window will be displayed listing these steps.
In the screenshot below you can see the result in the Trace View. The Trace View shows the elapsed time from left to right– in the example below around 4.8 seconds. From top to bottom we can see the call stack of the thread. In general we are interested in long-running threads on the bottom of the trace view. A long-running block at the bottom means that this is the lowest level coding that was instrumented and which is consuming all the time.
In the example below we see a mapping call that is performing many individual database statements – this will become visible by highlighting the lowest level. In such a case you have to review the coding of the mapping to see if the high amount of database calls can be summarized in one call.
Another case that is often seen is that a lookup using JDBC to a remote database or RFC to an ABAP system takes a long time in the mapping or adapter module. In such a case there will be one long block at the bottom of the transaction trace that also gives you some details about the statement that was executed.