Manage the Execution of Orchestration Jobs

Overview

The SAS Visual Process Orchestration Runtime Server is implemented as a process pool. At start=up, the Runtime Server parent process starts a specified number of DFWFPROC processes. When theRuntime Server receives a request to run an orchestration job, the server authenticates the requesting user and the job file is retrieved from the SAS Content Server.
When the job is present in memory, the Runtime Server gives the job to an available DFWFPROC process and passes in any input variables. The assigned process runs the orchestration job. During the execution of the orchestration job, the DFWFPROC process authenticates access to individual jobs through the SAS Web Application Server and SAS Metadata Server.
When the orchestration job is complete, the DFWFPROC process passes any output variables to the Runtime Server. The Runtime Server delivers those output variables to the requesting client. The DFWFPROC process is returned to the pool of available processes for eventual assignment to another orchestration job. You can configure the pool of DFWFPROC processes in dmserver.cfg, as described inConfigure Pooling.
If the number of active DFWFPROC processes exceeds the limit that is imposed by DMSERVER/JOBS_MAX_NUM, new job run requests are placed in a queue that is transparent to the client. Requests are taken off of the queue and assigned to DFWFPROC processes as those processes become available.
Log events are collected during the execution of each orchestration job. To learn more about logging, see Overview of Server Administration.
You can run an orchestration job from the command line and generate a unique log file, as described in as described in Run Orchestration Jobs with the dmpexec Command..

Limit the Number of Jobs

To manage server performance, you can use the configuration option DMSERVER/MAX_JOB_NUM to control the number of orchestration jobs that can run simultaneously. When the maximum number of jobs are running, incoming requests to run new orchestration jobs are placed in a queue.

Resolve Out-of-Memory Errors

Orchestration jobs with a SOAP Request node or an HTTP Request node can run out of memory if you are using a Sun Java Virtual Machine (JVM). If this happens, add the following option to the java start command that is specified in the app.cfg file for the server that executes the job.
The Java option is: -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled

Configure Pooling

The SAS Visual Process Orchestration Runtime Server is configured by default to effectively manage a pool of concurrent DFWFPROC processes. You can set configuration options to customize pooling behavior. The configuration options are specified in install-path/etc/app.cfg. None of the pooling options are active by default.
To reduce the number of concurrent DFWFPROC processes, you can specify a time value, in seconds, for the option POOLING/IDLE_TIMEOUT. This option causes the process pooler to terminate DFWFPROC processes that remain idle beyond the specified time limit. When not specified or when the value is 0, idle processes are not terminated.
You can specify the option POOLING/MAXIMUM_USE to specify that DFWFPROC processes are to be terminated after handling a specified number of job runs. When not specified or when the value is 0, there is no limit on the maximum number of job runs.
To control the launch rate of new DFWFPROC processes, you can specify the configuration option POOLING/CHILD_MAXIMUM_LAUNCHES. When this option has a value greater than 0, the process pooler simultaneously launches the specified number of processes. If additional processes are required, the process pooler waits until the first set of processes is launched before launching another set of processes. When not specified or when the value is 0, there is no maximum limit to the number of simultaneous process launches.
To specify the maximum length of time that the Runtime Server will wait to receive a DFWFPROC process, set the configuration option POOLING/GET_PROCESS_TIMEOUT. The job request fails if a process is not assigned to the job within the specified time period. When not specified or when the value is 0, the client waits indefinitely to receive a process.
To specify a maximum number of failures before a process is terminated, set the configuration option POOLING/MAXIMUM_ERRORS. When not specified or when the value is 0, the process is not terminated.