Schema URL

Type: object

Spiral Roadrunner config file schema version 2.

Properties

version string required

configuration version

Default: "2.7"
Values: "2.7"
centrifuge object

Centrifugo server plugin. Docs: https://centrifugal.dev/

7 nested properties
proxy_address string

Centrifugo server proxy address (docs: https://centrifugal.dev/docs/server/proxy#grpc-proxy)

Default: "tcp://127.0.0.1:30000"
grpc_api_address string
Default: "tcp://127.0.0.1:30000"
use_compressor boolean

Use gRPC gzip compressor

Default: false
version string

Your application version

Default: "v1.0.0"
name string

Your application name

Default: "roadrunner"
pool object

Static pool with PHP workers

8 nested properties
debug boolean

Pool debug mode. Worker will be created right before RR passes request to it

Default: false
command string

Command to use for the pool. Will override the server's command

Default: null
num_workers integer

How many worker processes will be started. Zero (or nothing) means the number of logical CPUs

Default: 0
min=0
max_jobs integer

Maximal count of worker executions. Zero (or nothing) means no limit

Default: 0
min=0
allocate_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
reset_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
destroy_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
supervisor object

Supervisor is used to control http workers

5 nested properties
watch_tick string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_worker_memory integer

Maximal worker memory usage in megabytes (soft limit). Zero means no limit

Default: 0
min=0
exec_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
tls object

TLS settings

2 nested properties
cert string

Path to the cert file

Examples: "/ssl/server.crt"
minLength=1
key string

Path to the cert key file

Examples: "/ssl/server.key"
minLength=1
rpc object
1 nested properties
listen string

TCP address:port for listening

Default: "tcp://127.0.0.1:6001"
Examples: "tcp://127.0.0.1:6001"
pattern=^tcp://[0-9a-zA-Z_.-]+:[0-9]{1,5}$
server object
7 nested properties
command string required

Worker starting command, with any required arguments

Examples: "php psr-worker.php"
on_init object

Execute command or script before RR starts allocating workers

3 nested properties
command string

Command to execute. It can be script or binary

Examples: "php not-worker.php", "sh script.sh", "start script.bat"
exec_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
env object[]

Environment variables for the worker processes

user string

User name (not UID) for the worker processes. An empty value means to use the RR process user

Default: ""
Examples: "www-data"
group string

Group name (not GID) for the worker processes. An empty value means to use the RR process user

Default: ""
Examples: "www-data"
env object[]

Environment variables for the worker processes

relay string

Worker relay can be: 'pipes', TCP (eg.: tcp://127.0.0.1:6002), or socket (eg.: unix:///var/run/rr.sock)

Default: "pipes"
Examples: "pipes", "tcp://127.0.0.1:6002", "unix:///var/run/rr.sock"
relay_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
logs object
7 nested properties
mode string

Logging mode

Values: "development" "production" "raw"
level string

Logging level

Values: "debug" "info" "warn" "error" "panic"
encoding string

Encoding format

Values: "console" "json"
output string
Examples: "stdout", "stderr", "/var/log/rr_errors.log"
err_output string
Examples: "stdout", "stderr", "/var/log/rr_errors.log"
channels Record<string, object>

You can configure each plugin log messages individually

file_logger_options object

file logger options

5 nested properties
log_output string

path to the file

max_size integer

maximum file size in MB

max_age integer

The maximum number of days to retain old log files based on the timestamp encoded in their filename

max_backups integer

The maximum number of old log files to retain

compress boolean

compress files to save a disk space

temporal object

Workflow and activity mesh service, https://docs.temporal.io/docs/php/introduction/

6 nested properties
address string

Address of temporal server

Default: "127.0.0.1:7233"
cache_size integer

Sticky cache size. Sticky workflow execution is the affinity between workflow tasks of a specific workflow execution to a specific worker. The benefit of sticky execution is that the workflow does not have to reconstruct state by replaying history from the beginning. The cache is shared between workers running within same process. This must be called before any worker is started. If not called, the default size of 10K (which may change) will be used

Default: 10000
namespace string

Namespace name for this client to work with

Default: "default"
metrics object

Temporal metrics

Default: null
Any of: object object, variant
1 nested properties
driver string

Metrics driver to use

Default: "prometheus"
Values: "prometheus" "statsd"
activities object

Static pool with PHP workers

8 nested properties
debug boolean

Pool debug mode. Worker will be created right before RR passes request to it

Default: false
command string

Command to use for the pool. Will override the server's command

Default: null
num_workers integer

How many worker processes will be started. Zero (or nothing) means the number of logical CPUs

Default: 0
min=0
max_jobs integer

Maximal count of worker executions. Zero (or nothing) means no limit

Default: 0
min=0
allocate_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
reset_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
destroy_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
supervisor object

Supervisor is used to control http workers

5 nested properties
watch_tick string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_worker_memory integer

Maximal worker memory usage in megabytes (soft limit). Zero means no limit

Default: 0
min=0
exec_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
tls object

Temporal TLS configuration

5 nested properties
key string

Path to the key file

Default: null
cert string

Path to the certificate

Default: null
root_ca string

Path to the CA certificate

Default: null
client_auth_type string

Client auth type

Default: "no_client_certs"
Values: "request_client_cert" "require_any_client_cert" "verify_client_cert_if_given" "no_client_certs" "require_and_verify_client_cert"
server_name string

ServerName is used to verify the hostname on the returned certificates unless InsecureSkipVerify is given. It is also included in the client's handshake to support virtual hosting unless it is an IP address.

Default: null
kv object

Key value storages plugin

service object

Service plugin settings

http object
15 nested properties
address string required

Host and port

Examples: "127.0.0.1:443", ":8080", "0.0.0.0:${HTTP_PORT:-8080}", "${HTTP_HOST:-127.0.0.1:8000}"
pattern=^((([0-9a-zA-Z_.-]+|)|\$\{([^}]+)\}):([0-9]{1,5})|\$\{([^}]+)\})|\$\{([^}]+)\}$
max_request_size integer

Maximal incoming request size in megabytes. Zero means no limit

Default: 0
min=0
raw_body boolean

Send raw body (unescaped) to the PHP worker for the application/x-www-form-urlencoded content type

Default: false
access_logs boolean

HTTP access logs

Default: false
middleware string[]

Middleware for the http plugin, order is important

trusted_subnets string[]

Allow incoming requests only from the following subnets

Default:
[
  "10.0.0.0/8",
  "127.0.0.0/8",
  "172.16.0.0/12",
  "192.168.0.0/16",
  "::1/128",
  "fc00::/7",
  "fe80::/10"
]
cache object
5 nested properties
api object

The cache-handler API cache management

3 nested properties
basepath string

Default route basepath for every additional APIs to avoid conflicts with existing routes

Default: null
prometheus object

Prometheus exposed metrics

souin object

Souin listing keys and cache management

cache_keys object
cdn object

If Souin is set after a CDN fill these information

4 nested properties
api_key string

Your provider API key if mandatory

provider string

The provider placed before Souin (e.g. fastly, cloudflare, akamai, varnish)

Values: "fastly" "cloudflare" "akamai" "varnish"
strategy string

The strategy to purge the CDN cache based on tags (e.g. soft, hard)

Values: "soft" "hard"
dynamic boolean

If true, you'll be able to add custom keys than the ones defined under the surrogate_keys key

Default: false
default_cache object
12 nested properties
allowed_http_verbs array
Default:
[
  "GET",
  "POST"
]
cache_name string

Override the cache name to use in the Cache-Status header

Default: "roadrunner"
distributed boolean

Use Olric or Etcd distributed storage

Default: false
headers array

Default headers concatenated in stored keys

Default: null
key object
etcd object

If distributed is set to true, you'll have to define either the etcd or olric section

olric object

If distributed is set to true, you'll have to define either the etcd or olric section

regex object

Regex to exclude from cache

stale string

Stale duration

Default: "1000s"
timeout object

Timeout configuration

ttl string

Default TTL

Default: "1000s"
default_cache_control string

Set default value for Cache-Control response header if not set by upstream

Default: "no-store"
log_level string

Logs verbosity

Default: "INFO"
Values: "DEBUG" "INFO" "WARN" "DPANIC" "PANIC" "ERROR" "FATAL"
uploads object
3 nested properties
dir string

Directory for file uploads. Empty value means to use $TEMP based on your OS

Default: ""
Examples: "/tmp"
forbid string[]

Deny files with the following extensions to upload

Default:
[
  ".php",
  ".exe",
  ".bat"
]
allow string[]

Allow files with the following extensions to upload

Default: ""
headers object

HTTP headers map

3 nested properties
cors object

Allows to control CORS headers

6 nested properties
allowed_origin string

Controls 'Access-Control-Allow-Origin' header value

Default: ""
Examples: "*"
allowed_headers string

Controls 'Access-Control-Allow-Headers' header value

Default: ""
Examples: "*"
allowed_methods string

Controls 'Access-Control-Allow-Methods' header value

Default: ""
Examples: "GET,POST,PUT,DELETE"
allow_credentials boolean

Controls 'Access-Control-Allow-Credentials' header value

Default: false
exposed_headers string

Controls 'Access-Control-Expose-Headers' header value

Default: ""
Examples: "Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma"
max_age integer

Controls 'Access-Control-Max-Age' header value (in seconds)

Default: 0
Examples: 600
request object

Hashmap

response object

Hashmap

static object

Static assets serving settings

6 nested properties
dir string required

Path to the directory with static assets

Examples: ".", "/var/www/html"
forbid string[]

File extensions that should not be served

allow string[]

File extensions which should be served

calculate_etag boolean

Turn on etag computation for the static file

weak boolean

Use a weak generator (/W), it uses only filename to generate a CRC32 sum

response object

Hashmap

pool object

Static pool with PHP workers

8 nested properties
debug boolean

Pool debug mode. Worker will be created right before RR passes request to it

Default: false
command string

Command to use for the pool. Will override the server's command

Default: null
num_workers integer

How many worker processes will be started. Zero (or nothing) means the number of logical CPUs

Default: 0
min=0
max_jobs integer

Maximal count of worker executions. Zero (or nothing) means no limit

Default: 0
min=0
allocate_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
reset_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
destroy_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
supervisor object

Supervisor is used to control http workers

5 nested properties
watch_tick string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_worker_memory integer

Maximal worker memory usage in megabytes (soft limit). Zero means no limit

Default: 0
min=0
exec_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
ssl object

SSL (Secure Sockets Layer) settings

7 nested properties
address string required

Host and port

Examples: "127.0.0.1:443", ":8080", "0.0.0.0:${HTTP_PORT:-8080}", "${HTTP_HOST:-127.0.0.1:8000}"
pattern=^((([0-9a-zA-Z_.-]+|)|\$\{([^}]+)\}):([0-9]{1,5})|\$\{([^}]+)\})|\$\{([^}]+)\}$
cert string required

Path to the cert file

Examples: "/ssl/server.crt"
minLength=1
key string required

Path to the cert key file

Examples: "/ssl/server.key"
minLength=1
acme object

ACME certificates provider (Let's encrypt)

7 nested properties
email string required

User email, used to create LE account

domains array required

List of your domains to obtain certificates

certs_dir string

Directory to use as a certificate/pk, account info storage

Default: "rr_cache"
alt_http_port integer

Alternate port for the http challenge. Challenge traffic should be redirected to this port if overridden.

Default: 80
alt_tlsalpn_port integer

Alternate port for the tls-alpn-01 challenge. Challenge traffic should be redirected to this port if overridden.

Default: 443
challenge_type string

Challenge types

Default: "http-01"
Values: "http-01" "tlsalpn-01"
use_production_endpoint boolean

Use production or staging endpoint. NOTE, try to use staging endpoint to make sure, that everything works correctly.

Default: false
redirect boolean

Automatic redirect from http to https schema

Default: false
root_ca string

Path to the root certificate authority file

Examples: "/ssl/root.crt"
minLength=1
client_auth_type string

Client auth type

Default: "no_client_certs"
Values: "request_client_cert" "require_any_client_cert" "verify_client_cert_if_given" "no_client_certs" "require_and_verify_client_cert"
fcgi object

FastCGI frontend support

1 nested properties
address string required

FastCGI connection DSN. Supported TCP and Unix sockets. An empty value disables this

Examples: "tcp://0.0.0.0:7921"
http2 object

HTTP/2 settings

2 nested properties
h2c boolean

HTTP/2 over non-encrypted TCP connection using H2C

Default: false
max_concurrent_streams integer

Maximal concurrent streams count

Default: 128
min=0
otel object

OpenTelemetry configuration

9 nested properties
insecure boolean

Use insecure endpoint

Default: false
compress boolean

Use gzip compressor

Default: false
exporter string

Provides functionality to emit telemetry to consumers

custom_url string

Used for the http client to override the default URL

Default: ""
endpoint string

Consumer's endpoint

Default: "localhost:4318"
client string

Client to send the spans

service_name string

User's service name

Default: "RoadRunner"
service_version string

User's service version

Default: "1.0.0"
headers object

Hashmap

redis object

Redis config section

21 nested properties
addrs array

Redis server addresses

Default: "localhost:6379"
master_name string
Default: null
username string
Default: null
password string
Default: null
db integer

Redis db number

Default: 0
max=10
sentinel_password string
Default: null
route_by_latency boolean
Default: false
route_randomly boolean
Default: false
dial_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_retries integer
Default: 1
min_retry_backoff string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_retry_backoff string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
pool_size integer
Default: 0
min_idle_conns integer
Default: 0
max_conn_age string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
read_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
write_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
pool_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_check_freq string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
read_only boolean
Default: false
metrics object

Application metrics in Prometheus format (docs: https://roadrunner.dev/docs/beep-beep-metrics)

2 nested properties
address string

Prometheus client address (path /metrics added automatically).

Default: "127.0.0.1:2112"
collect object

Application-specific metrics (published using an RPC connection to the server)

status object

Health check endpoint (docs: https://roadrunner.dev/docs/beep-beep-health). If response code is 200 - it means at least one worker ready to serve requests. 500 - there are no workers ready to service requests.

2 nested properties
address string required

Host and port to listen on (eg.: 127.0.0.1:2114). Use the following URL: http://127.0.0.1:2114/health?plugin=http. Multiple plugins must be separated using & - http://127.0.0.1:2114/health?plugin=http&plugin=rpc where http and rpc are active (connected) plugins.

Examples: "127.0.0.1:2114"
unavailable_status_code integer

Response status code if a requested plugin not ready to handle requests. Valid for both /health and /ready endpoints

Default: 503
reload object

Automatically detect PHP file changes and reload connected services

3 nested properties
interval string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
patterns string[]

Global patterns to sync

Default:
[
  ".php"
]
services object

List of included for sync services (this is a map, where key name is a plugin name)

nats object

NATS jobs driver

1 nested properties
addr string

NATS server address

Default: "demo.nats.io"
boltdb object

Boltdb jobs driver

1 nested properties
permissions integer
Default: "0777"
kafka object

Kafka jobs driver

1 nested properties
addr array

Kafka server addresses

amqp object

AMQP jobs driver

1 nested properties
addr string

AMQP Uri to connect to the rabbitmq server https://www.rabbitmq.com/uri-spec.html

Default: "amqp://guest:[email protected]:5672"
beanstalk object

Beanstalk jobs driver

2 nested properties
addr string

Beanstalk server address

Default: "tcp://127.0.0.1:11300"
timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
sqs object

SQS jobs driver (https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html)

5 nested properties
key string

AccessKey ID

Default: null
secret string

Secret Access key

Default: null
region string

AWS Region

Default: null
session_token string

AWS Session token

Default: null
endpoint string

AWS SQS endpoint to connect

Default: "http://127.0.0.1:9324"
jobs object

JOBS plugin

5 nested properties
num_pollers integer

Number of threads which will try to obtain the job from the priority queue. Default is the number of the logical CPU cores

Examples: 10, 32
pipeline_size integer

Size of the internal priority queue, if the internal PQ reach the max number of elements, the Push operation will be blocked

Default: 1000000
consume string[]

list of pipelines to be consumed by the server automatically at the start, keep empty if you want to start consuming manually

pool object

Static pool with PHP workers

8 nested properties
debug boolean

Pool debug mode. Worker will be created right before RR passes request to it

Default: false
command string

Command to use for the pool. Will override the server's command

Default: null
num_workers integer

How many worker processes will be started. Zero (or nothing) means the number of logical CPUs

Default: 0
min=0
max_jobs integer

Maximal count of worker executions. Zero (or nothing) means no limit

Default: 0
min=0
allocate_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
reset_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
destroy_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
supervisor object

Supervisor is used to control http workers

5 nested properties
watch_tick string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_worker_memory integer

Maximal worker memory usage in megabytes (soft limit). Zero means no limit

Default: 0
min=0
exec_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
pipelines object

List of broker pipelines associated with the drivers. This option is not required since you can declare pipelines in the runtime. Pipeline driver should exist.

2 nested properties
driver string[]

JOBS plugin driver

config object

driver configurations

tcp object

Plugin to handle RAW TCP packets, available since RR 2.6.0

2 nested properties
servers object

TCP servers to allocate

pool object

Static pool with PHP workers

8 nested properties
debug boolean

Pool debug mode. Worker will be created right before RR passes request to it

Default: false
command string

Command to use for the pool. Will override the server's command

Default: null
num_workers integer

How many worker processes will be started. Zero (or nothing) means the number of logical CPUs

Default: 0
min=0
max_jobs integer

Maximal count of worker executions. Zero (or nothing) means no limit

Default: 0
min=0
allocate_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
reset_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
destroy_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
supervisor object

Supervisor is used to control http workers

5 nested properties
watch_tick string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_worker_memory integer

Maximal worker memory usage in megabytes (soft limit). Zero means no limit

Default: 0
min=0
exec_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
grpc object

GRPC plugin

12 nested properties
listen string

Host and port with tcp:// prefix

Examples: "tcp://127.0.0.1:443", "${TCP:-tcp://127.0.0.1:443}", "tcp://127.0.0.1:${TCP_PORT}"
pattern=^(((tcp://[0-9a-zA-Z_.-]+|)|\$\{([^}]+)\}):([0-9]{1,5}||\$\{([^}]+)\}))|\$\{([^}]+)\}$
proto string[]

Proto file to use, multiply files supported [SINCE 2.6]

tls object

GRPC TLS configuration

4 nested properties
key string

Path to the key file

Default: null
cert string

Path to the certificate

Default: null
root_ca string

Path to the CA certificate

Default: null
client_auth_type string

Client auth type

Default: "no_client_certs"
Values: "request_client_cert" "require_any_client_cert" "verify_client_cert_if_given" "no_client_certs" "require_and_verify_client_cert"
max_send_msg_size integer

Maximum send message size

Default: 50
max_recv_msg_size integer

Maximum receive message size

Default: 50
max_connection_idle string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_connection_age string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_connection_age_grace string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_concurrent_streams integer

MaxConnectionAgeGrace is an additive period after MaxConnectionAge after which the connection will be forcibly closed

Default: 10
ping_time string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
pool object

Static pool with PHP workers

8 nested properties
debug boolean

Pool debug mode. Worker will be created right before RR passes request to it

Default: false
command string

Command to use for the pool. Will override the server's command

Default: null
num_workers integer

How many worker processes will be started. Zero (or nothing) means the number of logical CPUs

Default: 0
min=0
max_jobs integer

Maximal count of worker executions. Zero (or nothing) means no limit

Default: 0
min=0
allocate_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
reset_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
destroy_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
supervisor object

Supervisor is used to control http workers

5 nested properties
watch_tick string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_worker_memory integer

Maximal worker memory usage in megabytes (soft limit). Zero means no limit

Default: 0
min=0
exec_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
fileserver object

[SINCE 2.6] File server to serve static files

5 nested properties
address
calculate_etag
weak
stream_request_body
serve object[]
minItems=1

Definitions

BoltDB object

BoltDB config section

file string

file name for the db

Default: "rr.db"
permission integer

Access permission for the DB file.

Default: "0777"
interval integer

TTL keys check interval in seconds. It's safe to use 1 second here, but can be a little costly to performance

Default: 60
Memcached object

In-memory config section

addr string

Address of the memcached node

Default: "localhost:11211"
Redis object

Redis config section

addrs array

Redis server addresses

Default: "localhost:6379"
master_name string
Default: null
username string
Default: null
password string
Default: null
db integer

Redis db number

Default: 0
max=10
sentinel_password string
Default: null
route_by_latency boolean
Default: false
route_randomly boolean
Default: false
dial_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_retries integer
Default: 1
min_retry_backoff string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_retry_backoff string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
pool_size integer
Default: 0
min_idle_conns integer
Default: 0
max_conn_age string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
read_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
write_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
pool_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_check_freq string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
read_only boolean
Default: false
Memory object

In-memory config section

interval integer

TTL keys check interval in seconds. It's safe to use 1 second here, but can be a little costly to performance

Default: 60
Service object

User defined service

command string required

Command to execute. Can be any command here which can be executed.

env object

Hashmap

process_num integer

Number of copies (processes) to start per command

Default: 1
exec_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
remain_after_exit boolean

Remain process after exit. In other words, restart process after exit with any exit code

Default: false
restart_sec integer

Number of seconds to wait before process restart

Default: 30
WorkersPool object

Static pool with PHP workers

debug boolean

Pool debug mode. Worker will be created right before RR passes request to it

Default: false
command string

Command to use for the pool. Will override the server's command

Default: null
num_workers integer

How many worker processes will be started. Zero (or nothing) means the number of logical CPUs

Default: 0
min=0
max_jobs integer

Maximal count of worker executions. Zero (or nothing) means no limit

Default: 0
min=0
allocate_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
reset_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
destroy_timeout string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
supervisor object

Supervisor is used to control http workers

5 nested properties
watch_tick string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
idle_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
max_worker_memory integer

Maximal worker memory usage in megabytes (soft limit). Zero means no limit

Default: 0
min=0
exec_ttl string

Time duration

Examples: "1h", "2.5h", "2m", ".2m", "30s", "30.03s", "300ms", "1h3m40s500ms"
pattern=^([0-9]*(\.[0-9]*)?(ms|h|m|s))+$
TCPServers object

TCP server

addr string required

Address to listen

pattern=^[0-9a-zA-Z_.-]+:[0-9]{1,5}$
delimiter string

Data packets delimiter. Every send should end either with EOF or with the delimiter

Default: " "
read_buf_size integer

Chunks that RR uses to read the data. In MB. If you expect big payloads on a TCP server, to reduce read syscalls, would be a good practice to use a fairly big enough buffer

Default: 1
min=1max=100
Duration string

Time duration

Examples:
  • "1h"
  • "2.5h"
  • "2m"
  • ".2m"
  • "30s"
  • "30.03s"
  • "300ms"
  • "1h3m40s500ms"
HostAndPortWithTCP string

Host and port with tcp:// prefix

Examples:
  • "tcp://127.0.0.1:443"
  • "${TCP:-tcp://127.0.0.1:443}"
  • "tcp://127.0.0.1:${TCP_PORT}"
HostAndPort string

Host and port

Examples:
  • "127.0.0.1:443"
  • ":8080"
  • "0.0.0.0:${HTTP_PORT:-8080}"
  • "${HTTP_HOST:-127.0.0.1:8000}"
LogMode string

Logging mode

LogLevel string

Logging level

LogEncoding string

Encoding format

LogOutput string
Examples:
  • "stdout"
  • "stderr"
  • "/var/log/rr_errors.log"
Hashmap object

Hashmap

Bucket object

Hashmap with floats

HashMapInt Record<string, integer>
NATS_J object

NATS jobs driver

addr string

NATS server address

Default: "demo.nats.io"
KAFKA_J object

Kafka jobs driver

addr array

Kafka server addresses

BoltDB_J object

Boltdb jobs driver

permissions integer
Default: "0777"