This page details some environment variables you can use to configure the Optimization Server. To learn how to add environment variables, please read the following pages:
Limits are specified at Master application level, a set of label names
per group
(groups being arbitrary strings)
can be set by configuration.
Label limits
are expressed as a maximum number of concurrent jobs per label
(compounds of a label name
and a label value
).
Each worker task can belong to a group
(group is optional).
Here is an example:
As the Master application admin
I have a task: “MyTask” in the “cplex” group
I want to limit the concurrent “cplex” jobs to 2 per factory.
I know this limit at deployment time. When I deploy the application, I specify for the “cplex” group
,
a label limit
of 2 per “factory”.
As a Master application user
I want to run a new job from a task in the “cplex” group
.
When I create this new job (only per API for now), I need to give a string value to each
of the label names
included in the limits of this group
. In this case, I need to tell to which “factory” I am related.
The worker task group is set on the worker.yml
as follows:
tasks:
- id: MyTask
implementationClassName: com.decisionbrain.worker.MyTask
group: cplex
...
In this example the task MyTask
belongs to the group cplex
.
Group limits can be defined with the following environment variables on master :
OPTIMSERVER_SERVICE_TASKGROUP_GROUPS_0_NAME=cplex
OPTIMSERVER_SERVICE_TASKGROUP_GROUPS_0_LABELLIMITS_FACTORY=2
OPTIMSERVER_SERVICE_TASKGROUP_GROUPS_1_NAME=mycustomlimit
OPTIMSERVER_SERVICE_TASKGROUP_GROUPS_1_LABELLIMITS_LABELNAME1=2
OPTIMSERVER_SERVICE_TASKGROUP_GROUPS_1_LABELLIMITS_LABELNAME2=5
groups
are “cplex” and “mycustomlimit”label names
are “factory”, “labelname1”, “labelname2”label limits
are the number defined in front of the label name
In this example the label limit
for the “factory” label name
is 2. Which means, the maximum number of tasks is 2 with the label
“factory = NewYork” and 2 with the label
“factory = MyFactory” and so on. There is more than two tasks if they don’t have the same label value
for the “factory” label name
.
When creating a Job all the label names
should be configured with a label value
, if one is missing or one doesn’t exist the Job will
be created with the status REJECTED
.
Example of label name and value pairs:
Then when the Job is started the Master application will check the limits to queue or launch the Job execution.