{%- set controller_nr = balancer_backends|length %}
{%- set disabled_controller = "__DISABLED_CONTROLLER__" %}
{%- set max_reqs = ("__CONTROLLER_MAX_QUEUED_REQUESTS__" or 128)|int %}
+{%- set max_tunnels = ("__CONTROLLER_MAX_GATEWAY_TUNNELS__" or 1000)|int %}
### NGINX
nginx:
### SERVER
server:
config:
- {%- if max_reqs != "" %}
- worker_rlimit_nofile: {{ (max_reqs|int * 3 * controller_nr)|round|int }}
+ worker_rlimit_nofile: {{ (max_reqs * 3 + max_tunnels) * controller_nr }}
events:
- worker_connections: {{ (max_reqs|int * 3 * controller_nr)|round|int }}
- {%- else %}
- worker_rlimit_nofile: 4096
- events:
- worker_connections: 1024
- {%- endif %}
+ worker_connections: {{ (max_reqs * 3 + max_tunnels) * controller_nr }}
### STREAMS
http:
'geo $external_client':
{%- set _workers = ("__CONTROLLER_MAX_WORKERS__" or grains['num_cpus']*2)|int %}
{%- set max_workers = [_workers, 8]|max %}
{%- set max_reqs = ("__CONTROLLER_MAX_QUEUED_REQUESTS__" or 128)|int %}
+{%- set max_tunnels = ("__CONTROLLER_MAX_GATEWAY_TUNNELS__" or 1000)|int %}
### NGINX
nginx:
{% endif %}
worker_processes: {{ max_workers }}
- # each request is up to 3 connections (1 with client, 1 proxy to
+ # Each client request is up to 3 connections (1 with client, 1 proxy to
# controller, then potentially 1 from controller back to
# passenger). Each connection consumes a file descriptor.
# That's how we get these calculations
- worker_rlimit_nofile: {{ max_reqs * 3 + 1 }}
+ worker_rlimit_nofile: {{ max_reqs * 3 + 1 + max_tunnels }}
events:
- worker_connections: {{ max_reqs * 3 + 1 }}
+ worker_connections: {{ max_reqs * 3 + 1 + max_tunnels }}
### SITES
servers: