Performance Good Practices

Performance good practices

The following is a list of behaviors that can cause reduced performance on InterformNG2.

Bad practice
Good practice
Alternatives
Very large (>10MB) input payloads, for instance for batch creation of multiple outputs.
Small input payloads for one output at a time.
For batch spooled files, use the input component "From IBM i output queue (Stream)".
Otherwise increase InterFormNG2's maximum heap size to allow for the necessary allocations.
Workflows that generate a single huge job log because splits or repeats are used.
Use the "new log line" component to divide the job log after each split/repeat.

Sending multiple requests in rapid succession to a workflow with web-service input.
(potentially up to around 250 jobs can run in parallel, which will cause high memory usage and slow execution of each job)
Throttle input requests before they reach InterFormNG2.
Consider if a message queue workflow input component can be used instead, for instance ActiveMQ or Azure Service Bus.
1. Enable tenant throttling in the system settings (but be aware that the input requests will still be queued in memory).
2. Consider having multiple InterFormNG2 installations with load-balancing in front.
Multiple or large images in uncompressed PCL output.
1. Use PCL6 if it is supported by the printer.
2. Enable "compress images" in advanced PCL settings.

Storing thousands of resources in a single library folder.
Divide the resources in multiple folders (for instance create a new folder for each date)

Having a workflow save thousands of files with the same filename into a single file system folder with the "append version" conflict resolution.
1. Use unique file names.
2. Use the "time-limited store" feature where possible (requires unique IDs).
3. Use an archive system for long-term storage.
Divide the files into multiple folders (for instance create a new folder each day) or use the "rename existing" or "move existing" conflict resolution options.
Using large sample inputs in the designer, resulting in a lot of pages being generated.
(Each update to the template design will trigger a heavy re-rendering of the result view.)
Small sample inputs with just one variant of each page type.

Performing heavy SQL lookups in a template design.
(In the designer, every update to the template design will trigger all the SQL lookups.)
The dataset should be complete before it goes to the template.
Perform SQL lookups and similar data-fetching operations in the workflow.

In a template design, using only page-overflow for page breaks in documents with a lot of pages.
Whenever possible, use multiple page elements or the "page break" element to force page breaks.

In a template design, using an if-element to filter items from a repeat.
For instance:
- Repeat: /invoice_line
    - If: ./line_type = 5
Add the filter condition on the repeat expression itself:
   Repeat: /invoice_line[line_type = 5]

Using the e-mail log as a long-term archive.
(Search time will increase as the number of items in the log grows).
Use the automatic deletion to delete old logs within reasonable time.
If necessary, move older emails to a separate archive.



    • Related Articles

    • Performance settings

      You can edit the system performance settings, if you sign on to InterformNG2 as a system administrator. If you want to change tenant throttling setup or the cache settings for InterformNG2, then you can now click the Performance option in the bottom ...
    • PDF/UA (Accessibility)

      Introduction To support accessibility requirements, InterformNG2 can create PDF documents that are PDF/UA-1 compliant in accordance with ISO standard 14289-1:2014. UA is an abbreviation of Universal Accessibility. In e.g. Germany this is referenced ...
    • Other global settings

      The other global system settings are: Global system settings. Performance settings.
    • Read from file

      A simple way to activate InterformNG2 processing is to monitor a directory for input files. This is done using the workflow input type: Read from file InterformNG2 monitors folders by checking them at regular intervals (every 0.5 seconds) and ...
    • High Availability setup

      For multi-server installations with high availability, we support an active-active setup with multiple active application server instances, supported by a shared relational database. A load balancer should be in front, to distribute HTTPS requests ...