Kofax RPA Administrator's Guide
Shut Down RoboServer
RoboServer can be shut down using the command line tool ShutDownRoboServer. Run
ShutDownRoboServer without arguments to see the various options for how to shut down the server,
particularly how to handle any robots currently running on the server.
Production Configuration
RoboServer runs robots created with Design Studio. Robots can be started in various ways; either
scheduled to run at specific times by the Management Console, called via a REST web service, through
the Java or .NET APIs or from a Kapplet.
In order to get a stable and performing production environment, you may have to tweak some of the
default RoboServer parameters. We will look at the following configuration options:
• Number of RoboServer instances
• Memory allocation
• Number of concurrent robots
• Automatic memory overload detection
RoboServer runs on Oracle's Java Virtual Machine (JVM), which in turn runs on top of an operating
system (OS), which runs on top of your hardware. JVM's and OS's are patched, hardware architecture
changes, and each new iteration aims to bring better performance. Although we can give some general
guidelines about performance, the only way to make sure you have the optimal configuration is to test it.
As a general rule you get a little more performance by starting two instances of RoboServer. The JVM
uses memory management known as garbage collection (GC). On most hardware, only a single CPU core
is active during GC, which leaves 75% of the CPU idle on a quad-core CPU. If you start two instances of
RoboServer, one instance can still use the full CPU while the other in running GC. However, note that the
garbage collector CPU usage depends on the JDK specification that your environment operates on, so
multiple CPU cores can be using during the GC process.
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
15