summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeo2023-04-15 12:47:37 +1000
committerLeo2023-04-15 12:49:13 +1000
commit923883eb002f2e0401bc2f7aa1ef02a3c8a12006 (patch)
tree9f17681ce660061bf56ac9983fd62661644c3696
parentbeec3d4636ad1e3bb981df1105303637fb0d02fe (diff)
downloadaur-923883eb002f2e0401bc2f7aa1ef02a3c8a12006.tar.gz
New upstream version 2023.1.0
- update sample config files - remove prefix dot in names of config files - binary name changed from 'rr' to 'roadrunner' for compatibility - dependency updates
-rw-r--r--.SRCINFO13
-rw-r--r--.rr.yaml.sample-full469
-rw-r--r--.rr.yaml.sample-minimal12
-rw-r--r--PKGBUILD23
-rw-r--r--rr.full.sample.yaml2059
-rw-r--r--rr.minimal.sample.yaml13
6 files changed, 2091 insertions, 498 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 90a8e3a5ef1e..7c6d30c338e7 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,17 +1,18 @@
pkgbase = roadrunner
pkgdesc = High-performance PHP application server, load-balancer and process manager written in Golang
- pkgver = 2.12.3
+ pkgver = 2023.1.0
pkgrel = 1
+ epoch = 1
url = https://roadrunner.dev/
arch = x86_64
license = MIT
- makedepends = go>=1.19
+ makedepends = go>=1.20
depends = php>=7.4
options = !buildflags
- source = roadrunner-2.12.3.tar.gz::https://github.com/spiral/roadrunner/archive/v2.12.3.tar.gz
- source = .rr.yaml.sample-full
- source = .rr.yaml.sample-minimal
- sha256sums = 928feb2ced725bd9daff1349b1f2d066b6fba16ee825d7d1dcaf4c3883d2d52b
+ source = roadrunner-2023.1.0.tar.gz::https://github.com/spiral/roadrunner/archive/v2023.1.0.tar.gz
+ source = rr.full.sample.yaml
+ source = rr.minimal.sample.yaml
+ sha256sums = 080922a3f8216642f1364284ccaa10af7cce67ce1851b6148147cb26e327fbd5
sha256sums = SKIP
sha256sums = SKIP
diff --git a/.rr.yaml.sample-full b/.rr.yaml.sample-full
deleted file mode 100644
index 4dcc9ca92447..000000000000
--- a/.rr.yaml.sample-full
+++ /dev/null
@@ -1,469 +0,0 @@
-version: "2.7"
-
-rpc:
- # TCP address:port for listening.
- #
- # Default: "tcp://127.0.0.1:6001"
- listen: tcp://127.0.0.1:6001
-
-# Application server settings (docs: https://roadrunner.dev/docs/php-worker)
-server:
- # Worker starting command, with any required arguments.
- #
- # This option is required.
- command: "php psr-worker.php"
-
- # User name (not UID) for the worker processes. An empty value means to use the RR process user.
- #
- # Default: ""
- user: ""
-
- # Group name (not GID) for the worker processes. An empty value means to use the RR process user.
- #
- # Default: ""
- group: ""
-
- # Environment variables for the worker processes.
- #
- # Default: <empty map>
- env:
- - SOME_KEY: "SOME_VALUE"
- - SOME_KEY2: "SOME_VALUE2"
-
- # Worker relay can be: "pipes", TCP (eg.: tcp://127.0.0.1:6001), or socket (eg.: unix:///var/run/rr.sock).
- #
- # Default: "pipes"
- relay: pipes
-
- # Timeout for relay connection establishing (only for socket and TCP port relay).
- #
- # Default: 60s
- relay_timeout: 60s
-
-# Logging settings (docs: https://roadrunner.dev/docs/beep-beep-logging)
-logs:
- # Logging mode can be "development" or "production". Do not forget to change this value for production environment.
- #
- # Development mode (which makes DPanicLevel logs panic), uses a console encoder, writes to standard error, and
- # disables sampling. Stacktraces are automatically included on logs of WarnLevel and above.
- #
- # Default: "development"
- mode: development
-
- # Logging level can be "panic", "error", "warn", "info", "debug".
- #
- # Default: "debug"
- level: debug
-
- # Encoding format can be "console" or "json" (last is preferred for production usage).
- #
- # Default: "console"
- encoding: console
-
- # Output can be file (eg.: "/var/log/rr_errors.log"), "stderr" or "stdout".
- #
- # Default: "stderr"
- output: stderr
-
- # Errors only output can be file (eg.: "/var/log/rr_errors.log"), "stderr" or "stdout".
- #
- # Default: "stderr"
- err_output: stderr
-
- # You can configure each plugin log messages individually (key is plugin name, and value is logging options in same
- # format as above).
- #
- # Default: <empty map>
- channels:
- http:
- mode: development
- level: panic
- encoding: console
- output: stdout
- err_output: stderr
- server:
- mode: production
- level: info
- encoding: json
- output: stdout
- err_output: stdout
- rpc:
- mode: production
- level: debug
- encoding: console
- output: stderr
- err_output: stdout
-
-# Workflow and activity mesh service.
-#
-# Drop this section for temporal feature disabling.
-temporal:
- # Address of temporal server.
- #
- # Default: "127.0.0.1:7233"
- address: 127.0.0.1:7233
-
- # Activities pool settings.
- activities:
- # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs.
- #
- # Default: 0
- num_workers: 0
-
- # Maximal count of worker executions. Zero (or nothing) means no limit.
- #
- # Default: 0
- max_jobs: 64
-
- # Timeout for worker allocation. Zero means no limit.
- #
- # Default: 60s
- allocate_timeout: 60s
-
- # Timeout for worker destroying before process killing. Zero means no limit.
- #
- # Default: 60s
- destroy_timeout: 60s
-
- # Supervisor is used to control http workers (previous name was "limit", docs:
- # https://roadrunner.dev/docs/php-limit). "Soft" limits will not interrupt current request processing. "Hard"
- # limit on the contrary - interrupts the execution of the request.
- supervisor:
- # How often to check the state of the workers.
- #
- # Default: 1s
- watch_tick: 1s
-
- # Maximum time worker is allowed to live (soft limit). Zero means no limit.
- #
- # Default: 0s
- ttl: 0s
-
- # How long worker can spend in IDLE mode after first using (soft limit). Zero means no limit.
- #
- # Default: 0s
- idle_ttl: 10s
-
- # Maximal worker memory usage in megabytes (soft limit). Zero means no limit.
- #
- # Default: 0
- max_worker_memory: 128
-
- # Maximal job lifetime (hard limit). Zero means no limit.
- #
- # Default: 0s
- exec_ttl: 60s
-
- # Internal temporal communication protocol, can be "proto" or "json".
- #
- # Default: "proto"
- codec: proto
-
- # Debugging level (only for "json" codec). Set 0 for nothing, 1 for "normal", and 2 for colorized messages.
- #
- # Default: ?
- debug_level: 2
-
-# HTTP plugin settings.
-http:
- # Host and port to listen on (eg.: `127.0.0.1:8080`).
- #
- # This option is required.
- address: 127.0.0.1:8080
-
- # Maximal incoming request size in megabytes. Zero means no limit.
- #
- # Default: 0
- max_request_size: 256
-
- # Middlewares for the http plugin, order is important. Allowed values is: "headers", "static", "gzip".
- #
- # Default value: []
- middleware: ["headers", "static", "gzip"]
-
- # Allow incoming requests only from the following subnets (https://en.wikipedia.org/wiki/Reserved_IP_addresses).
- #
- # 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"]
- trusted_subnets: [
- "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",
- ]
-
- # File uploading settings.
- uploads:
- # Directory for file uploads. Empty value means to use $TEMP based on your OS.
- #
- # Default: ""
- dir: "/tmp"
-
- # Deny files with the following extensions to upload.
- #
- # Default: [".php", ".exe", ".bat"]
- forbid: [".php", ".exe", ".bat", ".sh"]
-
- # Settings for "headers" middleware (docs: https://roadrunner.dev/docs/http-headers).
- headers:
- # Allows to control CORS headers. Additional headers "Vary: Origin", "Vary: Access-Control-Request-Method",
- # "Vary: Access-Control-Request-Headers" will be added to the server responses. Drop this section for this
- # feature disabling.
- cors:
- # Controls "Access-Control-Allow-Origin" header value (docs: https://mzl.la/2OgD4Qf).
- #
- # Default: ""
- allowed_origin: "*"
-
- # Controls "Access-Control-Allow-Headers" header value (docs: https://mzl.la/2OzDVvk).
- #
- # Default: ""
- allowed_headers: "*"
-
- # Controls "Access-Control-Allow-Methods" header value (docs: https://mzl.la/3lbwyXf).
- #
- # Default: ""
- allowed_methods: "GET,POST,PUT,DELETE"
-
- # Controls "Access-Control-Allow-Credentials" header value (docs: https://mzl.la/3ekJGaY).
- #
- # Default: false
- allow_credentials: true
-
- # Controls "Access-Control-Expose-Headers" header value (docs: https://mzl.la/3qAqgkF).
- #
- # Default: ""
- exposed_headers: "Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma"
-
- # Controls "Access-Control-Max-Age" header value in seconds (docs: https://mzl.la/2PCSdvt).
- #
- # Default: 0
- max_age: 600
-
- # Automatically add headers to every request passed to PHP.
- #
- # Default: <empty map>
- request:
- input: "custom-header"
-
- # Automatically add headers to every response.
- #
- # Default: <empty map>
- response:
- X-Powered-By: "RoadRunner"
-
- # Settings for "static" middleware (docs: https://roadrunner.dev/docs/http-static).
- static:
- # Path to the directory with static assets.
- #
- # This option is required.
- dir: "/path/to/directory"
-
- # File extensions to forbid.
- #
- # Default: []
- forbid: [".htaccess"]
-
- # Automatically add headers to every request.
- #
- # Default: <empty map>
- request:
- input: "custom-header"
-
- # Automatically add headers to every response.
- #
- # Default: <empty map>
- response:
- X-Powered-By: "RoadRunner"
-
- # Workers pool settings.
- pool:
- # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs.
- #
- # Default: 0
- num_workers: 0
-
- # Maximal count of worker executions. Zero (or nothing) means no limit.
- #
- # Default: 0
- max_jobs: 64
-
- # Timeout for worker allocation. Zero means no limit.
- #
- # Default: 60s
- allocate_timeout: 60s
-
- # Timeout for worker destroying before process killing. Zero means no limit.
- #
- # Default: 60s
- destroy_timeout: 60s
-
- # Supervisor is used to control http workers (previous name was "limit", docs:
- # https://roadrunner.dev/docs/php-limit). "Soft" limits will not interrupt current request processing. "Hard"
- # limit on the contrary - interrupts the execution of the request.
- supervisor:
- # How often to check the state of the workers.
- #
- # Default: 1s
- watch_tick: 1s
-
- # Maximum time worker is allowed to live (soft limit). Zero means no limit.
- #
- # Default: 0s
- ttl: 0s
-
- # How long worker can spend in IDLE mode after first using (soft limit). Zero means no limit.
- #
- # Default: 0s
- idle_ttl: 10s
-
- # Maximal worker memory usage in megabytes (soft limit). Zero means no limit.
- #
- # Default: 0
- max_worker_memory: 128
-
- # Maximal job lifetime (hard limit). Zero means no limit.
- #
- # Default: 0s
- exec_ttl: 60s
-
- # SSL (Secure Sockets Layer) settings (docs: https://roadrunner.dev/docs/http-https).
- ssl:
- # Host and port to listen on (eg.: `127.0.0.1:443`).
- #
- # Default: ":443"
- address: "127.0.0.1:443"
-
- # Automatic redirect from http:// to https:// schema.
- #
- # Default: false
- redirect: true
-
- # Path to the cert file. This option is required for SSL working.
- #
- # This option is required.
- cert: /ssl/server.crt
-
- # Path to the cert key file.
- #
- # This option is required.
- key: /ssl/server.key
-
- # Path to the root certificate authority file.
- #
- # This option is optional.
- root_ca: /ssl/root.crt
-
- # FastCGI frontend support.
- fcgi:
- # FastCGI connection DSN. Supported TCP and Unix sockets. An empty value disables this.
- #
- # Default: ""
- address: tcp://0.0.0.0:7921
-
- # HTTP/2 settings.
- http2:
- # HTTP/2 over non-encrypted TCP connection using H2C.
- #
- # Default: false
- h2c: false
-
- # Maximal concurrent streams count.
- #
- # Default: 128
- max_concurrent_streams: 128
-
-# Application metrics in Prometheus format (docs: https://roadrunner.dev/docs/beep-beep-metrics). Drop this section
-# for this feature disabling.
-metrics:
- # Prometheus client address (path /metrics added automatically).
- #
- # Default: "127.0.0.1:2112"
- address: "127.0.0.1:2112"
-
- # Application-specific metrics (published using an RPC connection to the server).
- collect:
- app_metric:
- type: histogram
- help: "Custom application metric"
- labels: ["type"]
- buckets: [0.1, 0.2, 0.3, 1.0]
- # Objectives defines the quantile rank estimates with their respective absolute error (for summary only).
- objectives:
- - 1.4: 2.3
- - 2.0: 1.4
-
-# 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.
-# Drop this section for this feature disabling.
-status:
- # 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.
- #
- # This option is required.
- address: 127.0.0.1:2114
-
- # Response status code if a requested plugin not ready to handle requests
- # Valid for both /health and /ready endpoints
- #
- # Default: 503
- unavailable_status_code: 503
-
-# Automatically detect PHP file changes and reload connected services (docs:
-# https://roadrunner.dev/docs/beep-beep-reload). Drop this section for this feature disabling.
-reload:
- # Sync interval.
- #
- # Default: "1s"
- interval: 1s
-
- # Global patterns to sync.
- #
- # Default: [".php"]
- patterns: [".php"]
-
- # List of included for sync services (this is a map, where key name is a plugin name).
- #
- # Default: <empty map>
- services:
- http:
- # Directories to sync. If recursive is set to true, recursive sync will be applied only to the directories in
- # "dirs" section. Dot (.) means "current working directory".
- #
- # Default: []
- dirs: ["."]
-
- # Recursive search for file patterns to add.
- #
- # Default: false
- recursive: true
-
- # Ignored folders.
- #
- # Default: []
- ignore: ["vendor"]
-
- # Service specific file pattens to sync.
- #
- # Default: []
- patterns: [".php", ".go", ".md"]
-
-# RoadRunner internal container configuration (docs: https://github.com/spiral/endure).
-endure:
- # How long to wait for stopping.
- #
- # Default: 30s
- grace_period: 30s
-
- # Print graph in the graphviz format to the stdout (paste here to visualize https://dreampuf.github.io)
- #
- # Default: false
- print_graph: false
-
- # Logging level. Possible values: "debug", "info", "warning", "error", "panic", "fatal".
- #
- # Default: "error"
- log_level: error
diff --git a/.rr.yaml.sample-minimal b/.rr.yaml.sample-minimal
deleted file mode 100644
index cc9d080d56f6..000000000000
--- a/.rr.yaml.sample-minimal
+++ /dev/null
@@ -1,12 +0,0 @@
-version: "2.7"
-
-rpc:
- listen: tcp://127.0.0.1:6001
-
-server:
- command: "php tests/psr-worker-bench.php"
-
-http:
- address: "0.0.0.0:8080"
- pool:
- num_workers: 4
diff --git a/PKGBUILD b/PKGBUILD
index 9e32b30f04ed..88504bb309e4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,21 +1,22 @@
# Maintainer: Leo <i@setuid0.dev>
pkgname=roadrunner
-pkgver=2.12.3
+epoch=1
+pkgver=2023.1.0
pkgrel=1
pkgdesc="High-performance PHP application server, load-balancer and process manager written in Golang"
arch=(x86_64)
url="https://roadrunner.dev/"
license=(MIT)
depends=("php>=7.4")
-makedepends=("go>=1.19")
+makedepends=("go>=1.20")
source=(
"$pkgname-$pkgver.tar.gz::https://github.com/spiral/$pkgname/archive/v$pkgver.tar.gz"
- ".rr.yaml.sample-full"
- ".rr.yaml.sample-minimal"
+ "rr.full.sample.yaml"
+ "rr.minimal.sample.yaml"
)
sha256sums=(
- '928feb2ced725bd9daff1349b1f2d066b6fba16ee825d7d1dcaf4c3883d2d52b'
+ '080922a3f8216642f1364284ccaa10af7cce67ce1851b6148147cb26e327fbd5'
SKIP
SKIP
)
@@ -41,9 +42,9 @@ build() {
CGO_ENABLED=0 go build \
-trimpath \
-ldflags "-s\
- -X github.com/roadrunner-server/roadrunner/v2/internal/meta.version=${pkgver}\
- -X github.com/roadrunner-server/roadrunner/v2/internal/meta.buildTime=$(date +%FT%T%z)" \
- -o ./rr \
+ -X github.com/roadrunner-server/roadrunner/v2023/internal/meta.version=${pkgver}\
+ -X github.com/roadrunner-server/roadrunner/v2023/internal/meta.buildTime=$(date +%FT%T%z)" \
+ -o ./roadrunner \
./cmd/rr
}
@@ -55,7 +56,7 @@ check() {
}
package() {
- install -Dt "$pkgdir/usr/bin/" -m755 "$srcdir/$pkgname-$pkgver/rr"
- install -Dt "$pkgdir/usr/share/$pkgname/" -m644 "$srcdir/.rr.yaml.sample-full"
- install -Dt "$pkgdir/usr/share/$pkgname/" -m644 "$srcdir/.rr.yaml.sample-minimal"
+ install -Dt "$pkgdir/usr/bin/" -m755 "$srcdir/$pkgname-$pkgver/roadrunner"
+ install -Dt "$pkgdir/usr/share/$pkgname/" -m644 "$srcdir/rr.minimal.sample.yaml"
+ install -Dt "$pkgdir/usr/share/$pkgname/" -m644 "$srcdir/rr.full.sample.yaml"
}
diff --git a/rr.full.sample.yaml b/rr.full.sample.yaml
new file mode 100644
index 000000000000..9f2ad055cd97
--- /dev/null
+++ b/rr.full.sample.yaml
@@ -0,0 +1,2059 @@
+######################################################################################
+# THIS IS SAMPLE OF THE CONFIGURATION #
+# IT'S NOT A DEFAULT CONFIGURATION, IT'S JUST A REFERENCE TO ALL OPTIONS AND PLUGINS #
+# MORE DOCS CAN BE FOUND HERE: <https://roadrunner.dev/docs/intro-config> #
+######################################################################################
+
+# Production usage guide: https://roadrunner.dev/docs/app-server-production/2.x/en
+
+# Hint: RR will replace any config options using reference to environment variables,
+# eg.: `option_key: ${ENVIRONMENT_VARIABLE_NAME}`.
+
+# Important: TCP port numbers for each plugin (rpc, http, etc) must be unique!
+
+# RR configuration version
+version: '3'
+
+# Remote Procedures Calling (docs: https://roadrunner.dev/docs/plugins-rpc/2.x/en)
+# Is used for connecting to RoadRunner server from your PHP workers.
+rpc:
+ # TCP address:port for listening.
+ #
+ # Default: "tcp://127.0.0.1:6001"
+ listen: tcp://127.0.0.1:6001
+
+# Application server settings (docs: https://roadrunner.dev/docs/php-worker)
+server:
+ #[SINCE 2.6]
+ on_init:
+ # Command to execute before the main server's command
+ #
+ # This option is required if using on_init
+ command: "any php or script here"
+
+ # Script execute timeout
+ #
+ # Default: 60s [60m, 60h], if used w/o units its means - NANOSECONDS.
+ exec_timeout: 20s
+
+ # Environment variables for the worker processes.
+ #
+ # Default: <empty map>
+ env:
+ - SOME_KEY: "SOME_VALUE"
+ - SOME_KEY2: "SOME_VALUE2"
+ # Worker starting command, with any required arguments.
+ #
+ # This option is required.
+ command: "php psr-worker.php"
+
+ # Username (not UID) for the worker processes. An empty value means to use the RR process user.
+ #
+ # Default: ""
+ user: ""
+
+ # Group name (not GID) for the worker processes. An empty value means to use the RR process group.
+ #
+ # Default: ""
+ group: ""
+
+ # Environment variables for the worker processes.
+ #
+ # Default: <empty map>
+ env:
+ - SOME_KEY: "SOME_VALUE"
+ - SOME_KEY2: "SOME_VALUE2"
+
+ # Worker relay can be: "pipes", TCP (eg.: tcp://127.0.0.1:6002), or socket (eg.: unix:///var/run/rr.sock).
+ #
+ # Default: "pipes"
+ relay: pipes
+
+ # Timeout for relay connection establishing (only for socket and TCP port relay).
+ #
+ # Default: 60s
+ relay_timeout: 60s
+
+# Logging settings (docs: https://roadrunner.dev/docs/plugins-logger/2.x/en)
+logs:
+ # Logging mode can be "development", "production" or "raw". Do not forget to change this value for production environment.
+ #
+ # Development mode (which makes DPanicLevel logs panic), uses a console encoder, writes to standard error, and
+ # disables sampling. Stacktraces are automatically included on logs of WarnLevel and above.
+ #
+ # Default: "development"
+ mode: development
+
+ # Logging level can be "panic", "error", "warn", "info", "debug".
+ #
+ # Default: "debug"
+ level: debug
+
+ # Encoding format can be "console" or "json" (last is preferred for production usage).
+ #
+ # Default: "console"
+ encoding: console
+
+ # Log line ending
+ #
+ # Default: "\n"
+ line_ending: "\n"
+
+ # Output can be file (eg.: "/var/log/rr_errors.log"), "stderr" or "stdout".
+ #
+ # Default: "stderr"
+ output: stderr
+
+ # Errors only output can be file (eg.: "/var/log/rr_errors.log"), "stderr" or "stdout".
+ #
+ # Default: "stderr"
+ err_output: stderr
+
+ # File logger options
+ #
+ # Default: null
+ file_logger_options:
+
+ # Path to the file
+ #
+ # Default: It uses <processname>-lumberjack.log name in the os tempdir if empty.
+ log_output: "/tmp/my.log"
+
+ # Max file size in MB
+ #
+ # Default: 100
+ max_size: 100
+
+ # max_age is the maximum number of days to retain old log files based on the timestamp encoded in their filename.
+ #
+ # Default: 1 (day)
+ max_age: 1
+
+ # max_backups is the maximum number of old log files to retain.
+ #
+ # Default: retain all (if set to 0)
+ max_backups: 5
+
+ # Compress determines if the rotated log files should be compressed using gzip.
+ #
+ # Default: false
+ compress: false
+
+ # You can configure each plugin log messages individually (key is plugin name, and value is logging options in same
+ # format as above).
+ #
+ # Default: <empty map>
+ channels:
+ http:
+ mode: development
+ level: panic
+ encoding: console
+ output: stdout
+ err_output: stderr
+ server:
+ mode: production
+ level: info
+ encoding: json
+ output: stdout
+ err_output: stdout
+ rpc:
+ mode: raw
+ level: debug
+ encoding: console
+ output: stderr
+ err_output: stdout
+
+# Workflow and activity mesh service.
+#
+# Drop this section for temporal feature disabling.
+temporal:
+ # Address of temporal server.
+ #
+ # Default: "127.0.0.1:7233"
+ address: 127.0.0.1:7233
+
+ # 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: 10_000
+ cache_size: 10000
+
+ # Namespace name for this client to work with
+ #
+ # Default: default
+ namespace: default
+
+ # Temporal metrics
+ #
+ # Optional section
+ metrics:
+
+ # ---- Prometheus
+
+ # Metrics driver to use
+ #
+ # Optional, default: prometheus. Available values: prometheus, statsd
+ driver: prometheus
+ # Server metrics address
+ #
+ # Required for the production. Default: 127.0.0.1:9091, for the metrics 127.0.0.1:9091/metrics
+ address: 127.0.0.1:9091
+ # Metrics type
+ #
+ # Default: "summary". Supported values: summary, histogram
+ type: "summary"
+
+ # Temporal metrics prefix
+ #
+ # Default: (empty)
+ prefix: "foobar"
+
+ # ---- Statsd (uncomment)
+
+ # Metrics driver to use
+ #
+ # Optional, default: prometheus. Available values: prometheus, statsd
+ # driver: statsd
+
+ # Statsd host and port
+ #
+ # Optional, default: 127.0.0.1:8125
+ # host_port: "127.0.0.1:8125"
+
+ # Prefix for the metrics
+ #
+ # Optional, default: empty
+ # prefix: "samples"
+
+ # Flush interval is the maximum interval for sending packets.
+ #
+ # Optional, default: 1s
+ # flush_interval: 1s
+
+ # Flush bytes specifies the maximum udp packet size you wish to send.
+ # If FlushBytes is unspecified, it defaults to 1432 bytes, which is
+ # considered safe for local traffic
+ #
+ # Optional, default: 1432
+ # flush_bytes: 1432
+
+ # Tags passed to the statsd on init
+ #
+ # Optional, default: empty
+ #tags:
+ # - foo: bar
+
+ # Temporal TLS configuration
+ #
+ # This section is optional
+ tls:
+ # Path to the key file
+ #
+ # This option is required
+ key: ""
+
+ # Path to the certificate
+ #
+ # This option is required
+ cert: ""
+
+ # Path to the CA certificate, defines the set of root certificate authorities that servers use if required to verify a client certificate. Used with the `client_auth_type` option.
+ #
+ # This option is optional
+ root_ca: ""
+
+ # Client auth type.
+ #
+ # This option is optional. Default value: no_client_certs. Possible values: request_client_cert, require_any_client_cert, verify_client_cert_if_given, require_and_verify_client_cert, no_client_certs
+ client_auth_type: no_client_certs
+
+ # 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: hostname
+ server_name: "tls-sample"
+
+ # Activities pool settings.
+ #
+ # Equal to the regular pool options
+ activities:
+ # Debug mode for the pool. In this mode, pool will not pre-allocate the worker. Worker (only 1, num_workers ignored) will be allocated right after the request arrived.
+ #
+ # Default: false
+ debug: false
+
+ # Override server's command
+ #
+ # Default: empty
+ command: "php my-super-app.php"
+
+ # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs.
+ #
+ # Default: 0
+ num_workers: 0
+
+ # Maximal count of worker executions. Zero (or nothing) means no limit.
+ #
+ # Default: 0
+ max_jobs: 0
+
+ # Timeout for worker allocation. Zero means 60s.
+ #
+ # Default: 60s
+ allocate_timeout: 60s
+
+ # Timeout for the reset timeout. Zero means 60s.
+ #
+ # Default: 60s
+ reset_timeout: 60s
+
+ # Timeout for worker destroying before process killing. Zero means 60s.
+ #
+ # Default: 60s
+ destroy_timeout: 60s
+
+ # Supervisor is used to control http workers (previous name was "limit", docs:
+ # https://roadrunner.dev/docs/php-limit). "Soft" limits will not interrupt current request processing. "Hard"
+ # limit on the contrary - interrupts the execution of the request.
+ supervisor:
+ # How often to check the state of the workers.
+ #
+ # Default: 1s
+ watch_tick: 1s
+
+ # Maximum time worker is allowed to live (soft limit). Zero means no limit.
+ #
+ # Default: 0s
+ ttl: 0s
+
+ # How long worker can spend in IDLE mode after first using (soft limit). Zero means no limit.
+ #
+ # Default: 0s
+ idle_ttl: 10s
+
+ # Maximal worker memory usage in megabytes (soft limit). Zero means no limit.
+ #
+ # Default: 0
+ max_worker_memory: 128
+
+ # Maximal job lifetime (hard limit). Zero means no limit.
+ #
+ # Default: 0s
+ exec_ttl: 60s
+
+
+# KV plugin settings. Available drivers: boltdb, redis, memcached, memory.
+#
+# Any number of sections can be defined here.
+kv:
+ # User defined name of the section
+ #
+ # Default: none
+ boltdb-south:
+ # Driver which should be used for the storage
+ #
+ # This option is required.
+ driver: boltdb
+
+ # Local configuration section
+ #
+ # This option is required to use local section, otherwise (boltdb-south) global configuration will be used.
+ config:
+ # File name for the DB
+ #
+ # Default: "rr.db"
+ file: "rr.db"
+ # Access permission for the DB file.
+ #
+ # Default: "0777"
+ permissions: 0777
+ # TTL keys check interval in seconds. It's safe to use 1 second here, but can be a little costly to performance.
+ #
+ # Default: "60" seconds
+ interval: 40
+
+ # User defined name of the section (us-cental-kv used as example)
+ #
+ # Default: none
+ us-central-kv:
+ # Driver which should be used for the storage
+ #
+ # Default: none
+ driver: memcached
+ # Local configuration section
+ #
+ # This option is required to use local section, otherwise (us-central-kv) global configuration will be used.
+ config:
+ # Driver specific section. Address of the memcached node.
+ #
+ # Default: "localhost:11211"
+ addr: [ "localhost:11211" ]
+
+ # User defined name of the section
+ #
+ # Default: none
+ fast-kv-fr:
+ # Driver which should be used for the storage.
+ #
+ # Default: none
+ driver: redis
+ # Redis specific section. If one address provided - single node client will be used.
+ #
+ #
+ # UniversalClient is an abstract client which - based on the provided options -
+ # can connect to either clusters, or sentinel-backed failover instances
+ # or simple single-instance servers. This can be useful for testing
+ # cluster-specific applications locally.
+ # if the number of addrs is 1 and master_name is empty, a single-node redis Client will be returned
+ # if the number of addrs is two or more, a ClusterClient will be returned
+
+ # Local configuration section
+ #
+ # This option is required to use local section, otherwise (fast-kv-fr) global configuration will be used.
+ config:
+ addrs:
+ - "localhost:6379"
+ # if a MasterName is passed a sentinel-backed FailoverClient will be returned
+ master_name: ""
+ username: ""
+ password: ""
+ db: 0
+ sentinel_password: ""
+ route_by_latency: false
+ route_randomly: false
+ dial_timeout: 0s # accepted values [1s, 5m, 3h]
+ max_retries: 1
+ min_retry_backoff: 0s # accepted values [1s, 5m, 3h]
+ max_retry_backoff: 0s # accepted values [1s, 5m, 3h]
+ pool_size: 0
+ min_idle_conns: 0
+ max_conn_age: 0s # accepted values [1s, 5m, 3h]
+ read_timeout: 0s # accepted values [1s, 5m, 3h]
+ write_timeout: 0s # accepted values [1s, 5m, 3h]
+ pool_timeout: 0s # accepted values [1s, 5m, 3h]
+ idle_timeout: 0s # accepted values [1s, 5m, 3h]
+ idle_check_freq: 0s # accepted values [1s, 5m, 3h]
+ read_only: false
+
+ # User defined name of the section
+ #
+ # Default: none
+ local-memory:
+ # In memory driver specific section
+ #
+ # Default: none
+ driver: memory
+ # Local configuration section
+ #
+ # This option is required to use local section, otherwise (local-memory) global configuration will be used.
+ config:
+ # TTL check interval in seconds
+ #
+ # Default: 60 seconds
+ interval: 1
+
+# Service plugin settings
+service:
+
+ # User defined service name
+ #
+ # Default: none, required
+ some_service_1:
+ # Command to execute. Can be any command here which can be executed.
+ #
+ # Default: none, required.
+ command: php tests/plugins/service/test_files/loop.php
+
+ # Env variables for the process
+ #
+ # Default: empty
+ env:
+ foo: "BAR"
+ foo2: "BAR2"
+
+ # Number of copies (processes) to start per command.
+ #
+ # Default: 1
+ process_num: 1
+
+ # Allowed time before stop.
+ #
+ # Default: 0 (infinity), can be 1s, 2m, 2h (seconds, minutes, hours)
+ exec_timeout: 0s
+
+ # Show the name of the service in logs (e.g. service.some_service_1)
+ #
+ # Default: false
+ service_name_in_log: false
+
+ # Remain process after exit. In other words, restart process after exit with any exit code.
+ #
+ # Default: "false"
+ remain_after_exit: true
+
+ # Number of seconds to wait before process restart.
+ #
+ # Default: 30
+ restart_sec: 1
+
+ # User defined service name
+ #
+ # Default: none, required
+ some_service_2:
+ # Command to execute. Can be any command here which can be executed.
+ #
+ # Default: none, required.
+ command: "binary"
+
+ # Env variables for the process
+ #
+ # Default: empty
+ env:
+ foo: "BAR"
+ foo2: "BAR2"
+
+ # Number of copies (processes) to start per command.
+ #
+ # Default: 1
+ process_num: 1
+
+
+ # Show the name of the service in logs (e.g. service.some_service_1)
+ #
+ # Default: false
+ service_name_in_log: false
+
+ # Allowed time before stop.
+ #
+ # Default: 0 (infinity), can be 1s, 2m, 2h (seconds, minutes, hours)
+ exec_timeout: 0s
+
+ # Remain process after exit. In other words, restart process after exit with any exit code.
+ #
+ # Default: "false"
+ remain_after_exit: true
+
+ # Number of seconds to wait before process restart.
+ #
+ # Default: 30
+ restart_sec: 1
+
+otel:
+ # Use insecure endpoint (http) or insecure gRPC
+ #
+ # Default: false
+ insecure: true
+
+ # Use gzip to compress the spans
+ #
+ # Default: false
+ compress: false
+
+ # Client to send the spans
+ #
+ # Default: http. Possible values: `http`, `grpc`
+ client: http
+
+ # Provides functionality to emit telemetry to consumers
+ #
+ # Default: otlp. Possible values: otlp (used for new_relic, datadog), zipkin stderr or stdout
+ exporter: otlp
+
+ # Used for the http client to override the default URL
+ #
+ # Default: empty
+ custom_url: ""
+
+ # User's service name
+ #
+ # Default: RoadRunner
+ service_name: "rr_test"
+
+ # User's service version
+ #
+ # Default: RoadRunner
+ service_version: "1.0.0"
+
+ # Consumer's endpoint
+ #
+ # Default: 127.0.0.1:4318
+ endpoint: "127.0.0.1:4318"
+
+# HTTP plugin settings.
+http:
+ # Host and port to listen on (eg.: `127.0.0.1:8080`).
+ #
+ # This option is required.
+ address: 127.0.0.1:8080
+
+ # override http error code for the internal RR errors
+ #
+ # Default: 500
+ internal_error_code: 505
+
+ # HTTP access logs
+ #
+ # Default: false
+ access_logs: false
+
+ # Maximal incoming request size in megabytes. Zero means no limit.
+ #
+ # Default: 0
+ max_request_size: 256
+
+ # Send raw body (unescaped) to the PHP worker for the application/x-www-form-urlencoded content type
+ #
+ # Optional, default: false
+ raw_body: false
+
+ # Middlewares for the http plugin, order is important. Allowed values is: "headers", "gzip", "static", "sendfile", [SINCE 2.6] -> "new_relic", [SINCE 2.6] -> "http_metrics", [SINCE 2.7] -> "cache"
+ #
+ # Default value: []
+ middleware: [ "headers", "gzip" ]
+
+ # Allow incoming requests only from the following subnets (https://en.wikipedia.org/wiki/Reserved_IP_addresses).
+ #
+ # 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"]
+ trusted_subnets:
+ [
+ "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",
+ ]
+ # RFC 7234 RR Cache middleware
+ #
+ # Link: https://github.com/darkweak/souin
+ cache:
+ api:
+ basepath: /souin-api
+ prometheus:
+ basepath: /anything-for-prometheus-metrics
+ souin:
+ basepath: /anything-for-souin
+ cache_keys:
+ '.*\.css':
+ disable_body: true
+ disable_host: true
+ disable_method: true
+ cdn:
+ api_key: XXXX
+ provider: fastly
+ strategy: soft
+ dynamic: true
+ default_cache:
+ allowed_http_verbs:
+ - GET
+ - POST
+ - HEAD
+ cache_name: Souin
+ distributed: true
+ headers:
+ - Authorization
+ key:
+ disable_body: true
+ disable_host: true
+ disable_method: true
+ etcd:
+ configuration:
+ endpoints:
+ - etcd-1:2379
+ - etcd-2:2379
+ - etcd-3:2379
+ olric:
+ url: 'olric:3320'
+ regex:
+ exclude: 'ARegexHere'
+ stale: 1000s
+ timeout:
+ backend: 10s
+ cache: 20ms
+ ttl: 1000s
+ default_cache_control: no-store
+ log_level: INFO
+ ssl_providers:
+ - traefik
+ urls:
+ 'https:\/\/domain.com\/first-.+':
+ ttl: 1000s
+ 'https:\/\/domain.com\/second-route':
+ ttl: 10s
+ headers:
+ - Authorization
+ 'https?:\/\/mysubdomain\.domain\.com':
+ ttl: 50s
+ headers:
+ - Authorization
+ - 'Content-Type'
+ default_cache_control: public, max-age=86400
+ ykeys:
+ The_First_Test:
+ headers:
+ Content-Type: '.+'
+ The_Second_Test:
+ url: 'the/second/.+'
+ The_Third_Test:
+ The_Fourth_Test:
+ surrogate_keys:
+ The_First_Test:
+ headers:
+ Content-Type: '.+'
+ The_Second_Test:
+ url: 'the/second/.+'
+ The_Third_Test:
+ The_Fourth_Test:
+
+ # File uploading settings.
+ uploads:
+ # Directory for file uploads. Empty value means to use $TEMP based on your OS.
+ #
+ # Default: ""
+ dir: "/tmp"
+
+ # Deny files with the following extensions to upload.
+ #
+ # Default: [".php", ".exe", ".bat"]
+ forbid: [ ".php", ".exe", ".bat", ".sh" ]
+
+ # [SINCE 2.6] Allow files with the following extensions to upload
+ #
+ # Default: empty
+ allow: [ ".html", ".aaa" ]
+
+ # Settings for "headers" middleware (docs: https://roadrunner.dev/docs/middleware-headers/2.x/en).
+ headers:
+ # Allows to control CORS headers. Additional headers "Vary: Origin", "Vary: Access-Control-Request-Method",
+ # "Vary: Access-Control-Request-Headers" will be added to the server responses. Drop this section for this
+ # feature disabling.
+ cors:
+ # Controls "Access-Control-Allow-Origin" header value (docs: https://mzl.la/2OgD4Qf).
+ #
+ # Default: ""
+ allowed_origin: "*"
+
+ # Controls "Access-Control-Allow-Headers" header value (docs: https://mzl.la/2OzDVvk).
+ #
+ # Default: ""
+ allowed_headers: "*"
+
+ # Controls "Access-Control-Allow-Methods" header value (docs: https://mzl.la/3lbwyXf).
+ #
+ # Default: ""
+ allowed_methods: "GET,POST,PUT,DELETE"
+
+ # Controls "Access-Control-Allow-Credentials" header value (docs: https://mzl.la/3ekJGaY).
+ #
+ # Default: false
+ allow_credentials: true
+
+ # Controls "Access-Control-Expose-Headers" header value (docs: https://mzl.la/3qAqgkF).
+ #
+ # Default: ""
+ exposed_headers: "Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma"
+
+ # Controls "Access-Control-Max-Age" header value in seconds (docs: https://mzl.la/2PCSdvt).
+ #
+ # Default: 0
+ max_age: 600
+
+ # Automatically add headers to every request passed to PHP.
+ #
+ # Default: <empty map>
+ request:
+ input: "custom-header"
+
+ # Automatically add headers to every response.
+ #
+ # Default: <empty map>
+ response:
+ X-Powered-By: "RoadRunner"
+
+ # Settings for "static" middleware (docs: https://roadrunner.dev/docs/middleware-static/2.x/en).
+ static:
+ # Path to the directory to serve
+ #
+ # Default: "." (current)
+ dir: "."
+
+ # File patterns to forbid
+ #
+ # Default: empty
+ forbid: [ "" ]
+
+ # Etag calculation (base on the body CRC32)
+ #
+ # Default: false
+ calculate_etag: false
+
+ # Weak etag calculation (based only on the content-length CRC32)
+ #
+ # Default: false
+ weak: false
+
+ # Patterns to allow
+ #
+ # Default: empty
+ allow: [ ".txt", ".php" ]
+
+ # Request headers
+ #
+ # Default: empty
+ request:
+ input: "custom-header"
+
+ # Response headers
+ #
+ # Default: empty
+ response:
+ output: "output-header"
+
+ # Workers pool settings.
+ pool:
+ # Debug mode for the pool. In this mode, pool will not pre-allocate the worker. Worker (only 1, num_workers ignored) will be allocated right after the request arrived.
+ #
+ # Default: false
+ debug: false
+
+ # Override server's command
+ #
+ # Default: empty
+ command: "php my-super-app.php"
+
+ # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs.
+ #
+ # Default: 0
+ num_workers: 0
+
+ # Maximal count of worker executions. Zero (or nothing) means no limit.
+ #
+ # Default: 0
+ max_jobs: 0
+
+ # Timeout for worker allocation. Zero means 60s.
+ #
+ # Default: 60s
+ allocate_timeout: 60s
+
+ # Timeout for the reset timeout. Zero means 60s.
+ #
+ # Default: 60s
+ reset_timeout: 60s
+
+ # Timeout for worker destroying before process killing. Zero means 60s.
+ #
+ # Default: 60s
+ destroy_timeout: 60s
+
+ # Supervisor is used to control http workers (previous name was "limit", video: https://www.youtube.com/watch?v=NdrlZhyFqyQ).
+ # "Soft" limits will not interrupt current request processing. "Hard"
+ # limit on the contrary - interrupts the execution of the request.
+ supervisor:
+ # How often to check the state of the workers.
+ #
+ # Default: 1s
+ watch_tick: 1s
+
+ # Maximum time worker is allowed to live (soft limit). Zero means no limit.
+ #
+ # Default: 0s
+ ttl: 0s
+
+ # How long worker can spend in IDLE mode after first using (soft limit). Zero means no limit.
+ #
+ # Default: 0s
+ idle_ttl: 10s
+
+ # Maximal worker memory usage in megabytes (soft limit). Zero means no limit.
+ #
+ # Default: 0
+ max_worker_memory: 128
+
+ # Maximal job lifetime (hard limit). Zero means no limit.
+ #
+ # Default: 0s
+ exec_ttl: 60s
+
+ # SSL (Secure Sockets Layer) (TLS) settings (docs: https://roadrunner.dev/docs/app-server-https/2.x/en).
+ ssl:
+ # Host and port to listen on (eg.: `127.0.0.1:443`).
+ #
+ # Default: ":443"
+ address: "127.0.0.1:443"
+
+ # Use ACME certificates provider (Let's encrypt)
+ acme:
+ # Directory to use as a certificate/pk, account info storage
+ #
+ # Optional. Default: rr_cache
+ certs_dir: rr_le_certs
+
+ # User email
+ #
+ # Used to create LE account. Mandatory. Error on empty.
+ email: you-email-here@email
+
+ # Alternate port for the http challenge. Challenge traffic should be redirected to this port if overridden.
+ #
+ # Optional. Default: 80
+ alt_http_port: 80
+
+
+ # Alternate port for the tls-alpn-01 challenge. Challenge traffic should be redirected to this port if overridden.
+ #
+ # Optional. Default: 443.
+ alt_tlsalpn_port: 443
+
+ # Challenge types
+ #
+ # Optional. Default: http-01. Possible values: http-01, tlsalpn-01
+ challenge_type: http-01
+
+ # Use production or staging endpoint. NOTE, try to use staging endpoint to make sure, that everything works correctly.
+ #
+ # Optional, but for production should be set to true. Default: false
+ use_production_endpoint: true
+
+ # List of your domains to obtain certificates
+ #
+ # Mandatory. Error on empty.
+ domains: [
+ "your-cool-domain.here",
+ "your-second-domain.here"
+ ]
+
+ # Automatic redirect from http:// to https:// schema.
+ #
+ # Default: false
+ redirect: true
+
+ # Path to the cert file. This option is required for SSL working.
+ #
+ # This option is required.
+ cert: /ssl/server.crt
+
+ # Path to the cert key file.
+ #
+ # This option is required.
+ key: /ssl/server.key
+
+ # Path to the root certificate authority file.
+ #
+ # This option is optional (required for the mTLS).
+ root_ca: /ssl/root.crt
+
+ # Client auth type (mTLS)
+ #
+ # This option is optional. Default value: no_client_certs. Possible values: request_client_cert, require_any_client_cert, verify_client_cert_if_given, require_and_verify_client_cert, no_client_certs
+ client_auth_type: no_client_certs
+
+ # FastCGI frontend support.
+ fcgi:
+ # FastCGI connection DSN. Supported TCP and Unix sockets. An empty value disables this.
+ #
+ # Default: ""
+ address: tcp://0.0.0.0:7921
+
+ # HTTP/2 settings.
+ http2:
+ # HTTP/2 over non-encrypted TCP connection using H2C.
+ #
+ # Default: false
+ h2c: false
+
+ # Maximal concurrent streams count.
+ #
+ # Default: 128
+ max_concurrent_streams: 128
+
+# Redis section.
+redis:
+ # UniversalClient is an abstract client which - based on the provided options -
+ # can connect to either clusters, or sentinel-backed failover instances
+ # or simple single-instance servers. This can be useful for testing
+ # cluster-specific applications locally.
+ # if the number of addrs is 1 and master_name is empty, a single-node redis Client will be returned
+ # if the number of addrs is two or more, a ClusterClient will be returned
+ addrs:
+ - "localhost:6379"
+ # if a MasterName is passed a sentinel-backed FailoverClient will be returned
+ master_name: ""
+ username: ""
+ password: ""
+ db: 0
+ sentinel_password: ""
+ route_by_latency: false
+ route_randomly: false
+ dial_timeout: 0s # accepted values [1s, 5m, 3h]
+ max_retries: 1
+ min_retry_backoff: 0s # accepted values [1s, 5m, 3h]
+ max_retry_backoff: 0s # accepted values [1s, 5m, 3h]
+ pool_size: 0
+ min_idle_conns: 0
+ max_conn_age: 0s # accepted values [1s, 5m, 3h]
+ read_timeout: 0s # accepted values [1s, 5m, 3h]
+ write_timeout: 0s # accepted values [1s, 5m, 3h]
+ pool_timeout: 0s # accepted values [1s, 5m, 3h]
+ idle_timeout: 0s # accepted values [1s, 5m, 3h]
+ idle_check_freq: 0s # accepted values [1s, 5m, 3h]
+ read_only: false
+
+# Application metrics in Prometheus format (docs: https://roadrunner.dev/docs/plugins-metrics/2.x/en). Drop this section
+# for this feature disabling.
+metrics:
+ # Prometheus client address (path /metrics added automatically).
+ #
+ # Default: "127.0.0.1:2112"
+ address: "127.0.0.1:2112"
+
+ # Application-specific metrics (published using an RPC connection to the server).
+ collect:
+ app_metric:
+ type: histogram
+ help: "Custom application metric"
+ labels: [ "type" ]
+ buckets: [ 0.1, 0.2, 0.3, 1.0 ]
+ # Objectives defines the quantile rank estimates with their respective absolute error (for summary only).
+ objectives:
+ - 1.4: 2.3
+ - 2.0: 1.4
+
+# Health check endpoint (docs: https://roadrunner.dev/docs/app-server-health/2.x/en). If response code is 200 - it means at
+# least one worker ready to serve requests. 500 - there are no workers ready to service requests.
+# Drop this section for this feature disabling.
+status:
+ # 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.
+ #
+ # This option is required.
+ address: 127.0.0.1:2114
+
+ # Response status code if a requested plugin not ready to handle requests
+ # Valid for both /health and /ready endpoints
+ #
+ # Default: 503
+ unavailable_status_code: 503
+
+# Automatically detect PHP file changes and reload connected services
+# (docs: https://roadrunner.dev/docs/plugins-reload/2.x/en). Drop this section for this feature disabling.
+reload:
+ # Sync interval.
+ #
+ # Default: "1s"
+ interval: 1s
+
+ # Global patterns to sync.
+ #
+ # Default: [".php"]
+ patterns: [ ".php" ]
+
+ # List of included for sync services (this is a map, where key name is a plugin name).
+ #
+ # Default: <empty map>
+ services:
+ http:
+ # Directories to sync. If recursive is set to true, recursive sync will be applied only to the directories in
+ # "dirs" section. Dot (.) means "current working directory".
+ #
+ # Default: []
+ dirs: [ "." ]
+
+ # Recursive search for file patterns to add.
+ #
+ # Default: false
+ recursive: true
+
+ # Ignored folders.
+ #
+ # Default: []
+ ignore: [ "vendor" ]
+
+ # Service specific file pattens to sync.
+ #
+ # Default: []
+ patterns: [ ".php", ".go", ".md" ]
+
+
+# NATS jobs driver
+#
+# Default: nats://127.0.0.1:4222
+nats:
+ addr: "demo.nats.io"
+
+# AMQP jobs driver
+#
+# This option is required to use AMQP driver
+amqp:
+ # AMQP Uri to connect to the rabbitmq server https://www.rabbitmq.com/uri-spec.html
+ #
+ # This option is required for the production. Default: amqp://guest:guest@127.0.0.1:5672
+ addr: amqp://guest:guest@127.0.0.1:5672/
+
+# Beanstalk jobs driver
+#
+# This option is required to use Beanstalk driver
+beanstalk:
+ # Beanstalk address
+ #
+ # This option is required for the production. Default: tcp://127.0.0.1:11300
+ addr: tcp://127.0.0.1:11300
+
+ # Beanstalk connect timeout.
+ #
+ # Default: 30s
+ timeout: 10s
+
+# SQS jobs driver (https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html)
+#
+# This option is required to use SQS driver
+sqs:
+ # AccessKey ID
+ #
+ # This option is required for the production. Default: empty
+ key: api-key
+
+ # Secret access key
+ #
+ # This option is required for the production. Default: empty
+ secret: api-secret
+
+ # AWS region
+ #
+ # This option is required for the production. Default: empty
+ region: us-west-1
+
+ # AWS session token
+ #
+ # This option is required for the production. Default: empty
+ session_token: test
+
+ # AWS SQS endpoint to connect
+ #
+ # This option is required for the production. Default: http://127.0.0.1:9324
+ endpoint: http://127.0.0.1:9324
+
+# Kafka jobs driver
+#
+# This option is required to use Kafka driver,
+kafka:
+
+ # Kafka brokers addresses
+ #
+ # Required to use Kafka driver
+ brokers: ["127.0.0.1:9092", "127.0.0.1:9002"]
+
+ # SASL authentication options to use for all connections. Depending on the auth type, plain or aws_msk_plain sections might be removed.
+ #
+ # Optional, default: empty
+ sasl:
+
+ # PLAIN auth section -----
+
+ # Mechanism used for the authentication
+ #
+ # Required for the section. Might be: 'aws_msk_iam' or 'plain'
+ mechanism: plain
+
+ # Username to use for authentication.
+ #
+ # Required for the plain auth mechanism.
+ username: foo
+
+ # Password to use for authentication.
+ #
+ # Required for the plain auth mechanism.
+ password: bar
+
+ # Zid is an optional authorization ID to use in authenticating.
+ #
+ # Optional, default: empty.
+ zid: "foo"
+
+ # AWS_MSK_IAM auth section -----
+
+ # AWS Access key ID.
+ #
+ # Required
+ access_key: foo
+
+ # AWS Secret Access Key.
+ #
+ #
+ secret_key: bar
+
+ # SessionToken, if non-empty, is a session / security token to use for authentication.
+ # See the following link for more details:
+ #
+ # https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html
+ session_token: bar
+
+ # UserAgent is the user agent to for the client to use when connecting
+ # to Kafka, overriding the default "franz-go/<runtime.Version()>/<hostname>".
+ # Setting a UserAgent allows authorizing based on the aws:UserAgent
+ # condition key; see the following link for more details:
+ # https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent
+ user_agent: baz
+
+jobs:
+ # Number of threads which will try to obtain the job from the priority queue
+ #
+ # Default: number of the logical CPU cores
+ num_pollers: 32
+
+ # Size of the internal priority queue
+ #
+ # Default: 1_000_000
+ pipeline_size: 100000
+
+ # worker pool configuration
+ pool:
+ # Debug mode for the pool. In this mode, pool will not pre-allocate the worker. Worker (only 1, num_workers ignored) will be allocated right after the request arrived.
+ #
+ # Default: false
+ debug: false
+
+ # Override server's command
+ #
+ # Default: empty
+ command: "php my-super-app.php"
+
+ # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs.
+ #
+ # Default: 0
+ num_workers: 0
+
+ # Maximal count of worker executions. Zero (or nothing) means no limit.
+ #
+ # Default: 0
+ max_jobs: 0
+
+ # Timeout for worker allocation. Zero means 60s.
+ #
+ # Default: 60s
+ allocate_timeout: 60s
+
+ # Timeout for the reset timeout. Zero means 60s.
+ #
+ # Default: 60s
+ reset_timeout: 60s
+
+ # Timeout for worker destroying before process killing. Zero means 60s.
+ #
+ # Default: 60s
+ destroy_timeout: 60s
+
+ # 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.
+ pipelines:
+ # Pipeline name
+ #
+ # This option is required when defining pipelines via configuration.
+ test-local:
+
+ # Driver associated with the pipeline
+ #
+ # This option is required. Possible values: amqp, memory, sqs, beanstalk, boltdb
+ driver: memory
+
+ # Driver's configuration
+ #
+ # Should not be empty
+ config:
+ # Pipeline priority
+ #
+ # If the job has priority set to 0, it will inherit the pipeline's priority. Default: 10.
+ priority: 10
+
+ # Number of job to prefetch from the driver until ACK/NACK.
+ #
+ # Default: 100_000.
+ prefetch: 10000
+
+ # Pipeline name
+ #
+ # This option is required when defining pipelines via configuration.
+ test-local-1:
+ # Driver associated with the pipeline
+ #
+ # This option is required. Possible values: amqp, memory, sqs, beanstalk, boltdb
+ driver: boltdb
+
+ # Driver's configuration
+ #
+ # Should not be empty
+ config:
+ # Number of job to prefetch from the driver.
+ #
+ # Default: 100_000.
+ prefetch: 10000
+
+ # Pipeline priority
+ #
+ # If the job has priority set to 0, it will inherit the pipeline's priority. Default: 10.
+ priority: 10
+
+ # BoldDB file to create or DB to use
+ #
+ # Default: "rr.db"
+ file: "path/to/rr.db"
+
+ # Permissions for the boltdb database file
+ #
+ # This option is optional. Default: 0777
+ permissions: 0777
+
+ test-local-2:
+ # Driver name
+ #
+ # This option is required.
+ driver: amqp
+
+ # Driver's configuration
+ #
+ # Should not be empty
+ config:
+
+ # QoS - prefetch.
+ #
+ # Default: 10
+ prefetch: 10
+
+ # Pipeline priority
+ #
+ # If the job has priority set to 0, it will inherit the pipeline's priority. Default: 10.
+ priority: 1
+
+ # Consume any payload type (not only Jobs structured)
+ #
+ # Default: false
+ consume_all: false
+
+ # Durable queue
+ #
+ # Default: false
+ durable: false
+
+ # Durable exchange (rabbitmq option: https://www.rabbitmq.com/tutorials/amqp-concepts.html#exchanges)
+ #
+ # Default: false
+ exchange_durable: false
+
+ # Auto-delete (exchange is deleted when last queue is unbound from it): https://www.rabbitmq.com/tutorials/amqp-concepts.html#exchanges
+ #
+ # Default: false
+ exchange_auto_deleted: false
+
+ # Auto-delete (queue that has had at least one consumer is deleted when last consumer unsubscribes) (rabbitmq option: https://www.rabbitmq.com/queues.html#properties)
+ #
+ # Default: false
+ queue_auto_deleted: false
+
+ # Delete queue when stopping the pipeline
+ #
+ # Default: false
+ delete_queue_on_stop: false
+
+ # Queue name
+ #
+ # Default: default
+ queue: test-1-queue
+
+ # Exchange name
+ #
+ # Default: amqp.default
+ exchange: default
+
+ # Redial timeout (in seconds). How long to try to reconnect to the AMQP server.
+ #
+ # Default: 60
+ redial_timeout: 60
+
+ # Exchange type
+ #
+ # Default: direct.
+ exchange_type: direct
+
+ # Routing key for the queue
+ #
+ # Default: empty.
+ routing_key: test
+
+ # Declare a queue exclusive at the exchange
+ #
+ # Default: false
+ exclusive: false
+
+ # When multiple is true, this delivery and all prior unacknowledged deliveries
+ # on the same channel will be acknowledged. This is useful for batch processing
+ # of deliveries
+ #
+ # Default: false
+ multiple_ack: false
+
+ # The consumer_id is identified by a string that is unique and scoped for all consumers on this channel.
+ #
+ # Default: "roadrunner" + uuid.
+ consumer_id: "roadrunner-uuid"
+
+ # Use rabbitmq mechanism to requeue the job on fail
+ #
+ # Default: false
+ requeue_on_fail: false
+
+ # Queue headers
+ #
+ # Default: null
+ queue_headers:
+ x-queue-mode: lazy
+
+ test-local-3:
+ # Driver name
+ #
+ # This option is required.
+ driver: beanstalk
+
+ # Driver's configuration
+ #
+ # Should not be empty
+ config:
+
+ # Pipeline priority
+ #
+ # Default
+ priority: 11
+
+ # Beanstalk internal tube priority
+ #
+ # Default: 1
+ tube_priority: 1
+
+ # Consume any payload type (not only Jobs structured)
+ #
+ # Default: false
+ consume_all: false
+
+ # Tube name
+ #
+ # Default: default
+ tube: default-1
+
+ # If no job is available before this timeout has passed, Reserve returns a ConnError recording ErrTimeout.
+ #
+ # Default: 5s
+ reserve_timeout: 10s
+
+ test-local-4:
+ # Driver name
+ #
+ # This option is required.
+ driver: sqs
+
+ # Driver's configuration
+ #
+ # Should not be empty
+ config:
+
+ # Pipeline priority
+ #
+ # If the job has priority set to 0, it will inherit the pipeline's priority. Default: 10.
+ priority: 10
+
+ # Number of jobs to prefetch from the SQS until ACK/NACK.
+ #
+ # Default: 10
+ prefetch: 10
+
+ # Consume any payload type (not only Jobs structured)
+ #
+ # Default: false
+ consume_all: false
+
+ # Get queue URL only
+ #
+ # Default: false
+ skip_queue_declaration: false
+
+ # The duration (in seconds) that the received messages are hidden from subsequent
+ # retrieve requests after being retrieved by a ReceiveMessage request
+ #
+ # Default: 0
+ visibility_timeout: 0
+
+ # The duration (in seconds) for which the call waits for a message to arrive
+ # in the queue before returning. If a message is available, the call returns
+ # sooner than WaitTimeSeconds. If no messages are available and the wait time
+ # expires, the call returns successfully with an empty list of messages.
+ #
+ # Default: 0
+ wait_time_seconds: 0
+
+ # Queue name.
+ #
+ # Default: default
+ queue: default
+
+ # List of the AWS SQS attributes https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html.
+ attributes:
+ DelaySeconds: 0
+ MaximumMessageSize: 262144
+ MessageRetentionPeriod: 345600
+ ReceiveMessageWaitTimeSeconds: 0
+ VisibilityTimeout: 30
+ # Tags don't have any semantic meaning. Amazon SQS interprets tags as character
+ # strings.
+ tags:
+ test: "tag"
+
+ test-local-5:
+ # Driver name
+ #
+ # This option is required
+ driver: nats
+
+ # Driver's configuration
+ #
+ # Should not be empty
+ config:
+ # Pipeline priority
+ #
+ # If the job has priority set to 0, it will inherit the pipeline's priority. Default: 10.
+ priority: 2
+
+ # NATS prefetch
+ #
+ # Messages to read into the channel
+ prefetch: 100
+
+ # Consume any payload type (not only Jobs structured)
+ #
+ # Default: false
+ consume_all: false
+
+ # NATS subject
+ #
+ # Default: default
+ subject: default
+
+ # NATS stream
+ #
+ # Default: default-stream
+ stream: foo
+
+ # The consumer will only start receiving messages that were created after the consumer was created
+ #
+ # Default: false (deliver all messages from the stream beginning)
+ deliver_new: true
+
+ # Consumer rate-limiter in bytes https://docs.nats.io/jetstream/concepts/consumers#ratelimit
+ #
+ # Default: 1000
+ rate_limit: 100
+
+ # Delete the stream when after pipeline was stopped
+ #
+ # Default: false
+ delete_stream_on_stop: false
+
+ # Delete message from the stream after successful acknowledge
+ #
+ # Default: false
+ delete_after_ack: false
+
+ test-local-6:
+ # Driver name
+ #
+ # This option is required
+ driver: kafka
+
+ # Driver's configuration
+ #
+ # Should not be empty
+ config:
+
+ # Pipeline priority
+ #
+ # If the job has priority set to 0, it will inherit the pipeline's priority. Default: 10.
+ priority: 1
+
+
+ # Auto create topic for the consumer/producer
+ #
+ # Optional, default: false
+ auto_create_topics_enable: false
+
+ # Kafka producer options
+ #
+ # Optional, required only if Push/PushBatch is used.
+ producer_options:
+
+ # disable_idempotent disables idempotent produce requests, opting out of
+ # Kafka server-side deduplication in the face of reissued requests due to
+ # transient network problems.
+ # Idempotent production is strictly a win, but does require the IDEMPOTENT_WRITE permission on CLUSTER
+ # (pre Kafka 3.0), and not all clients can have that permission.
+ #
+ # Optional, defaut: false
+ disable_idempotent: false
+
+ # required_acks sets the required acks for produced records.
+ #
+ # Optional, default: AllISRAcks. Possible values: NoAck, LeaderAck, AllISRAck
+ required_acks: AllISRAck
+
+ # max_message_bytes upper bounds the size of a record batch, overriding the default 1,000,012 bytes.
+ # This mirrors Kafka's max.message.bytes.
+ #
+ # Optional, default: 1000012
+ max_message_bytes: 1000012
+
+ # request_timeout sets how long Kafka broker's are allowed to respond produce requests, overriding the default 10s.
+ # If a broker exceeds this duration, it will reply with a request timeout error.
+ #
+ # Optional, default: 10s. Possible values: 10s, 10m.
+ request_timeout: 10s
+
+ # delivery_timeout sets a rough time of how long a record can sit around in a batch before timing out,
+ # overriding the unlimited default. If idempotency is enabled (as it is by default), this option is only
+ # enforced if it is safe to do so without creating invalid sequence numbers.
+ #
+ # Optional, default: delivery.timeout.ms Kafka option. Possible values: 10s, 10m.
+ delivery_timeout: 100s
+
+ # transaction_timeout sets the allowed for a transaction, overriding the default 40s. It is a good idea to
+ # keep this less than a group's session timeout.
+ #
+ # Optional, default 40s. Possible values: 10s, 10m.
+ transaction_timeout: 100
+
+ # compression_codec sets the compression codec to use for producing records.
+ #
+ # Optional, default is chosen in the order preferred based on broker support. Possible values: gzip, snappy, lz4, zstd.
+ compression_codec: gzip
+
+ # Kafka Consumer options. Needed to consume messages from the Kafka cluster.
+ #
+ # Optional, needed only if `consume` is used.
+ consumer_options:
+
+ # topics: adds topics to use for consuming
+ #
+ # Default: empty (will produce an error), possible to use regexp if `consume_regexp` is set to true.
+ topics: [ "foo", "bar", "^[a-zA-Z0-9._-]+$" ]
+
+ # consume_regexp sets the client to parse all topics passed to `topics` as regular expressions.
+ # When consuming via regex, every metadata request loads *all* topics, so that all topics can be passed to
+ # any regular expressions. Every topic is evaluated only once ever across all regular expressions; either it
+ # permanently is known to match, or is permanently known to not match.
+ #
+ # Optional, default: false.
+ consume_regexp: true
+
+ # max_fetch_message_size sets the maximum amount of bytes a broker will try to send during a fetch, overriding the default 50MiB.
+ # Note that brokers may not obey this limit if it has records larger than this limit.
+ # Also note that this client sends a fetch to each broker concurrently, meaning the client will
+ # buffer up to <brokers * max bytes> worth of memory. This corresponds to the Java fetch.max.bytes setting.
+ #
+ # Optional, default 50000
+ max_fetch_message_size: 50000
+
+ # min_fetch_message_size sets the minimum amount of bytes a broker will try to send during a fetch,
+ # overriding the default 1 byte. With the default of 1, data is sent as soon as it is available.
+ # This corresponds to the Java fetch.min.bytes setting.
+ #
+ # Optional, default: 1.
+ min_fetch_message_size: 1
+
+ # consume_partitions sets partitions to consume from directly and the offsets to start consuming those partitions from.
+ # This option is basically a way to explicitly consume from subsets of partitions in topics, or to consume at exact offsets.
+ #
+ # NOTE: This option is not compatible with group consuming and regex consuming.
+ #
+ # Optional, default: null
+ consume_partitions:
+
+ # Topic for the consume_partitions
+ #
+ # Required at least one topic.
+ foo:
+
+ # Partition for the topic.
+ #
+ # Required at least one partition.
+ 0:
+
+ # Partition offset.
+ #
+ # Required if all options is used. No default, error on empty.
+ # Possible values: AtEnd, At, AfterMilli, AtStart, Relative, WithEpoch
+ type: AtStart
+
+ # Value for the: At, AfterMilli, Relative and WithEpoch offsets.
+ #
+ # Optional, default: 0.
+ value: 1
+
+ # consumer_offset sets the offset to start consuming from, or if OffsetOutOfRange is seen while fetching,
+ # to restart consuming from.
+ #
+ # Optional, default: AtStart
+ consumer_offset:
+
+ # Partition offset.
+ #
+ # Optional, default: AtStart. Possible values: AtEnd, At, AfterMilli, AtStart, Relative, WithEpoch
+ type: AtStart
+
+ # Value for the: At, AfterMilli, Relative and WithEpoch offsets.
+ #
+ # Optional, default: 0.
+ value: 1
+
+ # group_options sets the consumer group for the client to join and consume in.
+ # This option is required if using any other group options.
+ #
+ # Default: empty.
+ group_options:
+
+ # group_id sets the group to consume.
+ #
+ # Required if using group consumer.
+ group_id: foo
+
+ # block_rebalance_on_poll switches the client to block rebalances whenever you poll.
+ #
+ # Optional, default: false.
+ block_rebalance_on_poll: true
+
+ # list of pipelines to be consumed by the server automatically at the start, keep empty if you want to start consuming manually
+ consume:
+ [
+ "test-local",
+ "test-local-1",
+ "test-local-2",
+ "test-local-3",
+ "test-local-4",
+ "test-local-5",
+ "test-local-6",
+ ]
+
+grpc:
+ # GRPC address to listen
+ #
+ # This option is required
+ listen: "tcp://127.0.0.1:9001"
+
+ # Proto file to use, multiply files supported [SINCE 2.6]
+ #
+ # This option is required
+ proto:
+ - "first.proto"
+ - "second.proto"
+
+ # GRPC TLS configuration
+ #
+ # This section is optional
+ tls:
+ # Path to the key file
+ #
+ # This option is required
+ key: ""
+
+ # Path to the certificate
+ #
+ # This option is required
+ cert: ""
+
+ # Path to the CA certificate, defines the set of root certificate authorities that servers use if required to verify a client certificate. Used with the `client_auth_type` option.
+ #
+ # This option is optional
+ root_ca: ""
+
+ # Client auth type.
+ #
+ # This option is optional. Default value: no_client_certs. Possible values: request_client_cert, require_any_client_cert, verify_client_cert_if_given, require_and_verify_client_cert, no_client_certs
+ client_auth_type: no_client_certs
+
+ # Maximum send message size
+ #
+ # This option is optional. Default value: 50 (MB)
+ max_send_msg_size: 50
+
+ # Maximum receive message size
+ #
+ # This option is optional. Default value: 50 (MB)
+ max_recv_msg_size: 50
+
+ # MaxConnectionIdle is a duration for the amount of time after which an
+ # idle connection would be closed by sending a GoAway. Idleness duration is
+ # defined since the most recent time the number of outstanding RPCs became
+ # zero or the connection establishment.
+ #
+ # This option is optional. Default value: infinity.
+ max_connection_idle: 0s
+
+ # MaxConnectionAge is a duration for the maximum amount of time a
+ # connection may exist before it will be closed by sending a GoAway. A
+ # random jitter of +/-10% will be added to MaxConnectionAge to spread out
+ # connection storms.
+ #
+ # This option is optional. Default value: infinity.
+ max_connection_age: 0s
+
+ # MaxConnectionAgeGrace is an additive period after MaxConnectionAge after
+ # which the connection will be forcibly closed.
+ max_connection_age_grace: 0s8h
+
+ # MaxConnectionAgeGrace is an additive period after MaxConnectionAge after
+ # which the connection will be forcibly closed.
+ #
+ # This option is optional: Default value: 10
+ max_concurrent_streams: 10
+
+ # After a duration of this time if the server doesn't see any activity it
+ # pings the client to see if the transport is still alive.
+ # If set below 1s, a minimum value of 1s will be used instead.
+ #
+ # This option is optional. Default value: 2h
+ ping_time: 1s
+
+ # After having pinged for keepalive check, the server waits for a duration
+ # of Timeout and if no activity is seen even after that the connection is
+ # closed.
+ #
+ # This option is optional. Default value: 20s
+ timeout: 200s
+
+ # Usual workers pool configuration
+ pool:
+ # Debug mode for the pool. In this mode, pool will not pre-allocate the worker. Worker (only 1, num_workers ignored) will be allocated right after the request arrived.
+ #
+ # Default: false
+ debug: false
+
+ # Override server's command
+ #
+ # Default: empty
+ command: "php my-super-app.php"
+
+ # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs.
+ #
+ # Default: 0
+ num_workers: 0
+
+ # Maximal count of worker executions. Zero (or nothing) means no limit.
+ #
+ # Default: 0
+ max_jobs: 0
+
+ # Timeout for worker allocation. Zero means 60s.
+ #
+ # Default: 60s
+ allocate_timeout: 60s
+
+ # Timeout for the reset timeout. Zero means 60s.
+ #
+ # Default: 60s
+ reset_timeout: 60s
+
+ # Timeout for worker destroying before process killing. Zero means 60s.
+ #
+ # Default: 60s
+ destroy_timeout: 60s
+
+# [SINCE 2.6] TCP plugin
+tcp:
+ # The list of TCP servers to start. There are can be any number of servers you want to allocate.
+ servers:
+
+ # Server name. Can be any string. Will be sent to the worker in the context.
+ #
+ # Default: none.
+ server1:
+
+ # Address to listen.
+ #
+ # Error if empty.
+ addr: 127.0.0.1:7778
+
+ # Data packets delimiter. Every send should end either with EOF or with the delimiter.
+ #
+ # Default: CRLF (\r\n)
+ delimiter: "\r\n"
+
+ # 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: 1MB
+ read_buf_size: 1
+ server2:
+ addr: 127.0.0.1:8811
+ read_buf_size: 10
+ server3:
+ addr: 127.0.0.1:8812
+ delimiter: "\r\n"
+ read_buf_size: 1
+
+ pool:
+ # Debug mode for the pool. In this mode, pool will not pre-allocate the worker. Worker (only 1, num_workers ignored) will be allocated right after the request arrived.
+ #
+ # Default: false
+ debug: false
+
+ # Override server's command
+ #
+ # Default: empty
+ command: "php my-super-app.php"
+
+ # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs.
+ #
+ # Default: 0
+ num_workers: 0
+
+ # Maximal count of worker executions. Zero (or nothing) means no limit.
+ #
+ # Default: 0
+ max_jobs: 0
+
+ # Timeout for worker allocation. Zero means 60s.
+ #
+ # Default: 60s
+ allocate_timeout: 60s
+
+ # Timeout for the reset timeout. Zero means 60s.
+ #
+ # Default: 60s
+ reset_timeout: 60s
+
+ # Timeout for worker destroying before process killing. Zero means 60s.
+ #
+ # Default: 60s
+ destroy_timeout: 60s
+
+# [SINCE 2.6] Fileserver to serve static files.
+fileserver:
+ # File server address
+ #
+ # Error on empty
+ address: 127.0.0.1:10101
+ # Etag calculation. Request body CRC32.
+ #
+ # Default: false
+ calculate_etag: true
+
+ # Weak etag calculation
+ #
+ # Default: false
+ weak: false
+
+ # Enable body streaming for the files more than 4KB
+ #
+ # Default: false
+ stream_request_body: true
+
+ serve:
+ # HTTP prefix
+ #
+ # Error on empty
+ - prefix: "/foo"
+
+ # Directory to serve
+ #
+ # Default: "."
+ root: "../../../tests"
+
+ # When set to true, the server tries minimizing CPU usage by caching compressed files
+ #
+ # Default: false
+ compress: false
+
+ # Expiration duration for inactive file handlers. Units: seconds.
+ #
+ # Default: 10, use a negative value to disable it.
+ cache_duration: 10
+
+ # The value for the Cache-Control HTTP-header. Units: seconds
+ #
+ # Default: 10 seconds
+ max_age: 10
+
+ # Enable range requests
+ # https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
+ #
+ # Default: false
+ bytes_range: true
+
+ - prefix: "/foo/bar"
+ root: "../../../tests"
+ compress: false
+ cache_duration: 10
+ max_age: 10
+ bytes_range: true
+
+# Centrifugo server plugin
+#
+# Docs: https://centrifugal.dev/
+centrifuge:
+ # Centrifugo server proxy address (docs: https://centrifugal.dev/docs/server/proxy#grpc-proxy)
+ #
+ # Optional, default: tcp://127.0.0.1:30000
+ proxy_address: "tcp://127.0.0.1:30000"
+
+ # gRPC server API address (docs: https://centrifugal.dev/docs/server/server_api#grpc-api)
+ #
+ # Optional, default: tcp://127.0.0.1:30000. Centrifugo: `grpc_api` should be set to true and `grpc_port` should be the same as in the RR's config.
+ grpc_api_address: tcp://127.0.0.1:30000
+
+ # Use gRPC gzip compressor
+ #
+ # Optional, default: false
+ use_compressor: true
+
+ # Your application version
+ #
+ # Optional, default: v1.0.0
+ version: "v1.0.0"
+
+ # Your application name
+ #
+ # Optional, default: roadrunner
+ name: "roadrunner"
+
+ # TLS configuration
+ #
+ # Optional, default: null
+ tls:
+ # TLS key
+ #
+ # Required
+ key: /path/to/key.pem
+
+ # TLS certificate
+ #
+ # Required
+ cert: /path/to/cert.pem
+
+
+## RoadRunner internal container configuration (docs: https://github.com/spiral/endure).
+endure:
+ # How long to wait for stopping.
+ #
+ # Default: 30s
+ grace_period: 30s
+
+ # Print graph in the graphviz format to the stdout (paste here to visualize https://dreampuf.github.io)
+ #
+ # Default: false
+ print_graph: false
+
+ # Logging level. Possible values: "debug", "info", "warn", "error", "panic", "fatal".
+ #
+ # Default: "error"
+ log_level: error \ No newline at end of file
diff --git a/rr.minimal.sample.yaml b/rr.minimal.sample.yaml
new file mode 100644
index 000000000000..11185382aebb
--- /dev/null
+++ b/rr.minimal.sample.yaml
@@ -0,0 +1,13 @@
+version: '3'
+
+rpc:
+ listen: tcp://127.0.0.1:6001
+
+server:
+ command: "php worker.php"
+
+http:
+ address: "0.0.0.0:8080"
+
+logs:
+ level: error \ No newline at end of file