JVM configuration

Configuring JVM options

Schedulers and workers are Java processes. The default JVM arguments are in the service launcher scripts: /usr/bin/engflow/scheduler_service and /usr/bin/engflow/worker_service in the VM / container image.

Using environment variables

You can pass custom JVM flags through the ENGFLOW_SCHEDULER_JVM_FLAGS and ENGFLOW_WORKER_JVM_FLAGS environment variables in the VM / container image.

This approach is useful when you can specify environment variables for the service, e.g. when deploying on bare metal or Kubernetes.

All flags must be on a single line. These flags take priority over the default ones, and over those defined in a configuration file (see below).

Example:

ENGFLOW_SCHEDULER_JVM_FLAGS="-Xms2G -Xmx16G -Xdiag"

Using configuration files

You can pass custom JVM flags through the /etc/engflow/scheduler_jvm_flags and /etc/engflow/worker_jvm_flags files.

This approach is useful when you cannot easily specify environment variables, e.g. when deploying on AWS EC2 or GCP VMs.

You have to either build these files into the VM / container image, or create them on-the-fly before starting the service (e.g. in a Terraform startup script). Remember to make the file readable (chmod a+r <PATH>).

Flags may be on multiple lines, but comments are not allowed (they would be interpreted as flags). These flags take priority over the default ones, but not over those defined in an environment variable (see above).

Example file contents:

-Xms2G
-Xmx16G
-Xdiag
2021-09-21