diff --git a/docs/production/deployment.md b/docs/production/deployment.md index d710a628d5..846feed0bb 100644 --- a/docs/production/deployment.md +++ b/docs/production/deployment.md @@ -492,6 +492,20 @@ non-empty value is currently equivalent to true). [s3-uploads]: ../production/upload-backends.html#s3-backend-configuration +#### `queue_workers_multiprocess` + +By default, Zulip automatically detects whether the system has enough +memory to run Zulip queue processors in the higher-throughput but more +multiprocess mode (or to save 1.5GiB of RAM with the multithreaded +mode). The calculation is based on whether the system has enough +memory (currently 3.5GiB) to run a single-server Zulip installation in +the multiprocess mode. + +Set to `true` or `false` to override the automatic calculation. This +override is useful both Docker systems (where the above algorithm +might see the host's memory, not the container's) and/or when using +remote servers for postgres, memcached, redis, and RabbitMQ. + #### `uwsgi_buffer_size` Override the default uwsgi buffer size of 8192. diff --git a/puppet/zulip/manifests/app_frontend_base.pp b/puppet/zulip/manifests/app_frontend_base.pp index def8949f7f..86fc22d2ab 100644 --- a/puppet/zulip/manifests/app_frontend_base.pp +++ b/puppet/zulip/manifests/app_frontend_base.pp @@ -72,7 +72,8 @@ class zulip::app_frontend_base { # This determines whether we run queue processors multithreaded or # multiprocess. Multiprocess scales much better, but requires more # RAM; we just auto-detect based on available system RAM. - $queues_multiprocess = $zulip::common::total_memory_mb > 3500 + $queues_multiprocess_default = $zulip::common::total_memory_mb > 3500 + $queues_multiprocess = Boolean(zulipconf('application_server', 'queue_workers_multiprocess', $queues_multiprocess_default)) $queues = [ 'deferred_work', 'digest_emails',