November 3, 2014
By Keith Knuth, Principal Software Architect
We previously published a blog article on tips to improve performance of the Infor Process Automation (IPA) server. To follow-up on that post we thought an article on tweaking IPA Processes would be helpful as well. Since Infor Process Designer is an open-ended visual design tool you can easily create Processes that are not as efficient as they could be. So here are some tips to help you through the design of your Processes.
Remove repetitive file writes
While inside a loop (from a SQL read, or IOS Query, etc.) it is common for designers to place a File node in the Process to write out each record from the query to a file. Disk I/O is a performance killer, so wherever possible remove these repetitive file writes with a Message Builder node inside the loop. By doing so, you will be appending all your records to a String in memory which is much faster then writing it out to disk. At the end of the loop place one File Access node in your Process that writes all of the Message Builder node output to a file at once.
Tune remote file access
Accessing files across the network for reading or writing can really hurt performance. Some ProcessFlow users have found this out when migrating to IPA. Previously, they configured their system to have their Infor Lawson business applications and ProcessFlow on the same server. So if ProcessFlow had to access a file on disk it was quite fast as everything was local. However, once they migrated to IPA, customers often choose to place IPA on a separate server. The same Process must now access the file across the network instead of locally. The Process now runs slower than before!
What can be done? Make sure you are accessing the file as efficiently as possible (see previous tip). Talk to your network IT folks to see if anything can be done between the two servers to reduce network lag. You can also write to a local file during the Process then move the file to the other server (FTP node) at the end of the Process.
Upload with Logging off
In our previous article about IPA Server performance we talked about how Process logging can negatively affect performance. It is important to realize that Process logging can be controlled from the Designer as well. When you upload a Process the Designer allows the user to specify what the log level should be. Unless you are troubleshooting a problem the log level should be “No Debug” for optimal performance.
Merge Assign Nodes
For some reason, I have seen many Processes built with multiple Assign nodes, one right after the other, in series. The more nodes in your flow the slower it will process so you should combine nodes whenever possible. In this case, all those Assign nodes can be combined into one with multiple steps in the node.
Remove Assign Nodes
Many users do not know that values returned from a query or processing node have internal variable names automatically created. There is no reason to add an Assign Node after the query or processing node in order to assign the value to a custom variable name. For example, if you make a query to a Lawson application using the Lawson Query node called “MyLawsonQuery” you can instantly access field values returned by using <!MyLwsnQuery400_EMPLOYEE>. Where “Employee” was the name of the column/field in the application. There is no need to slow the Process down by adding an Assign Node to create a new <!MyEmployee> variable. Just use auto-created variables!
Use JDBC Connection Pooling
If you have multiple SQL nodes in your Process you may benefit from JDBC Connection pooling. There is an IPA grid property called “pfi.pooling.jdbcUsePooledConnections” that is set to False by default. Setting it to true will keep a database connection open during the execution of a Process so that the server doesn’t have to reconnect for every SQL node. Look up the topic “Configuring Grid and other properties for Infor Process Automation” in your online Infocenter for more information on this topic.
Private SQL Query Node variables
The SQL Query node has an option to “Enable SQL result values outside the loop”. If you have this option selected it can reduce performance considerably. This is due to the processing time it takes to store potentially thousands (maybe tens of thousands) of variable values that can come from large SQL queries. Avoid using this option if performance is a concern.
Adjust Query Page Size
Both the Lawson Query Node and Landmark Node have Page Size parameters that are adjustable. Implementing a Page Size breaks the query into multiple calls to the application each getting one “page” of data. If you have enough memory on your IPA server, you should eliminate paging in order to reduce the number of calls to the application. For the Lawson Query Node this is done in the Infor Rich Client under System Parameters > (your configuration) > Infor Lawson > Page Size. Set it to zero if possible.
For the Landmark node the configuration is done in the Properties tab of the node. Set the Page Size to -1 for no paging. However, this option may take some trial and error to find the optimal setting. Any page size over 30 will result in the Infor Grid treating the query as a batch transaction instead of an online one. What this means is that depending on the size and number of records in the result set you may find better performance in keeping the page size at 30 or under for this node. Experiment with your Process and see what is best.
If all else fails…
Turn on Activity Logging for the Process and pay close attention to the timestamps in the log as the Process executes. Which node is the bottleneck? Once you find it, dive into how that node is setup and how to make it execute more efficiently. There is also a Metrics chart available on the Workunit form that can help you determine which node was slow (see below).
This list is by no means exhaustive. Do you have other tips for maximizing the performance of your Infor Process Automation processes? If so, sound off in the comments below.
*updated 7/6/2016 to include “Remove Assign Nodes” section