PingOne DaVinci

Performance Tuning

Use these best practices to enhance the latency, throughput, and resource efficiency of your flows while minimizing downtime and risk.

Use an appropriate logging level

Logging tracks various system events and requires a certain amount of system resources. More verbose logging provides additional information, but it also consumes more system resources, which impacts the flow’s overall performance.

DaVinci supports multiple logging levels:

  • Error: Gathers basic information about the flow start and any errors encountered. This is the default.

  • None: Performs no logging.

  • Info: Gathers information about every node that runs.

  • Debug: Gathers detailed information about every node that runs.

You should set flow logging to Error unless you’re actively attempting to diagnose an issue, and you should set flow logging back to Error as soon as you’re done.

You can update the log level by opening the flow and clicking More options ( ) > Flow Settings, then clicking the Logging tab.

Minimize the number of nodes

The number of nodes that run in an execution impacts the flow execution time. You should take steps to minimize the number of nodes that run:

  • Divide larger flows into subflows when possible.

  • Remove any unnecessary nodes from the flow.

  • Skip nodes that aren’t needed in a given execution.

Avoid unhandled execution paths

If a flow takes a path that’s not handled by existing nodes, it can result in flow timeouts. For example, if a flow contains a function connector to compare two values and branches based on which value is larger, but doesn’t contain any nodes to handle the scenario where the values are equal, it can time out.

You should verify that error cases are handled as soon as they occur. Ensure that all execution paths for connectors are explicitly defined, and all success and failure paths are handled.

Minimize the payload size

Any data that’s used during the flow requires computational resources, which slows the flow. Remove any unnecessary references to large data, including variables, images, and the output from custom functions.

Minimize loop iterations

If your flow contains loops, minimize the number of times the loops are repeated, and ensure that every loop has defined exit conditions.

Follow good coding practices in custom functions

If your flow uses custom functions, minimize the use of long-running loops, and avoid creating custom functions with deeply nested JSON structures.