Kofax RPA Administrator's Guide
Number of concurrent robots
The amount of concurrent robots a RoboServer can run depends on the amount of CPU available,
and how fast you can get the data RoboServer needs to process. The number of concurrent robots is
configured in the Management Console cluster settings. A robot running against a slow website will use
a lot less CPU than a robot running against a website with a fast response time, and here is why. The
amount of CPU used by a program can be described with the following formula
CPU (core)% = 1 - WaitTime/TotalTime
If a robot takes 20 seconds to execute, but 15 seconds are spent waiting for the website, it is only
executing for 5 seconds, thus during the 20 seconds it is using an average of 25% (of a CPU core). The
steps in a robot are executed in sequence, which means that a single executing robot utilizes only one
CPU core at a time. Most modern CPUs have multiple cores, so a robot that executes in 20 seconds, but
waits for 15 seconds, in fact only uses about 6% of a quad-core CPU.
By default RoboServer is configured to run 20 robots concurrently. The number of concurrent robots is
configured in the Management Console cluster settings. If all your robots use 6% CPU, the CPU is fully
utilized when you are running 16-17 robots concurrently. If you start 33 of these 6% robots concurrently,
you overload RoboServer; because the amount of CPU available is constant, the result is that each robot
takes twice as long to finish. In the real world the CPU utilization of a robot may be anywhere between
5-95% of a CPU core, depending on robot logic and the website it interacts with. As a result it is hard to
guess or calculate the correct value for the max concurrent robots. The only way to be sure you have the
right value is to do a load test and monitor the RoboServer CPU utilization, as well as the robot runtime as
load increases.
Memory allocation
Another parameter that may affect the number of concurrent robots each RoboServer can handle is
the amount of memory. The amount of memory used by robots can vary from a few megabytes (MB)
to hundreds of MB. By default, RoboServer is configured to use 2048 MB for a 64-bit system. Check
Change the RAM Allocation to see how to control memory allocation. To avoid getting an out of memory
error, provide enough memory to a RoboServer. To ensure proper memory allocation, monitor memory
utilization during your load tests. The JVM does not allocate all of the available memory, but it reserves it
from the OS. Once the JVM starts to use the memory, it is not given back to the OS. To find the optimal
memory allocation, run a series of load tests that push the CPU to 100%. After each test is complete,
check how much of the reserved memory was actually used by the JVM (the java.exe process). If all
2048MB (default) were used, increase (usually double) the memory and run the test again. At some point
the JVM does not use all of the reserved memory, and the number of the used memory reflects the actual
memory requirement and should be specified for the RoboServer.
Memory overload detection
Since RoboServer stops working if it runs out of memory, RoboServer tries to prevent memory overload.
Before a RoboServer starts a new robot, it checks the memory utilization. If it is above 80%, it queues the
robot instead of starting it; this greatly reduces the risk of crashing a RoboServer if the memory allocation
is configured incorrectly. This mechanism is often referred to as the 80% memory threshold. Once
14