Skip to content

Commit fd59462

Browse files
committed
Expose Erlang max processes and atoms in job spec
This will not work in all RabbitMQ versions, use rabbitmq-server.additional_erl_args for greater cross-version compatibility. Related to rabbitmq/rabbitmq-server#1528
1 parent 1de1157 commit fd59462

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

jobs/rabbitmq-server/spec

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,23 @@ properties:
159159
The buffer limit is per distribution channel.
160160
A higher limit gives lower latency and higher throughput at the expense of higher memory use.
161161
default: 128000
162+
rabbitmq-server.max_erlang_processes:
163+
description: >
164+
Sets the maximum number of Erlang processes.
165+
Recent versions of RabbitMQ default to 1048576, which should be sufficient for most scenarios.
166+
Nodes that service many clients (e.g. ~100k), or have many queues (e.g. ~50k), are known to require a higher value (e.g. 2000000).
167+
A process uses 338 words when spawned (2704 bytes on 64bit architectures), including a heap of 233 words.
168+
The actual maximum chosen may be much larger than the Number passed.
169+
Currently the runtime system often, but not always, chooses a value that is a power of 2.
170+
For more info, see http://erlang.org/doc/man/erl.html#max_processes & http://erlang.org/doc/efficiency_guide/advanced.html
171+
default: 1048576
172+
rabbitmq-server.max_erlang_atoms:
173+
description: >
174+
Sets the maximum number of Erlang atoms.
175+
Recent versions of RabbitMQ default to 5000000, which should be sufficient in almost all scenarios.
176+
It's unlikely that this value will need to be increased, it's exposed for consistency & transparency.
177+
For more info, see http://erlang.org/doc/man/erl.html#+t & http://erlang.org/doc/efficiency_guide/advanced.html
178+
default: 5000000
162179
rabbitmq-server.hipe_compile:
163180
description: >
164181
Set to true to precompile parts of RabbitMQ with HiPE, a just-in-time compiler for Erlang.

jobs/rabbitmq-server/templates/env.erb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,11 @@ export RABBITMQ_NODENAME="rabbit@<%= "#{spec.name}#{spec.index}-#{spec.deploymen
3939
export RABBITMQ_CLUSTER_NAME="<%= spec.deployment %>"
4040

4141
export RABBITMQ_SCHEDULER_BIND_TYPE="<%= p("rabbitmq-server.scheduler_bind_type") %>"
42+
export RABBITMQ_DISTRIBUTION_BUFFER_SIZE="<%= p("rabbitmq-server.distribution_buffer_size") %>"
43+
export RABBITMQ_MAX_NUMBER_OF_PROCESSES="<%= p("rabbitmq-server.max_erlang_processes") %>"
44+
export RABBITMQ_MAX_NUMBER_OF_ATOMS="<%= p("rabbitmq-server.max_erlang_atoms") %>"
4245

4346
export RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="<%= p("rabbitmq-server.additional_erl_args") %>"
44-
export RABBITMQ_DISTRIBUTION_BUFFER_SIZE="<%= p("rabbitmq-server.distribution_buffer_size") %>"
4547

4648
export RABBITMQ_SERVER_START_ARGS="-pz /var/vcap/jobs/rabbitmq-server/packages/looking_glass/ebin -pz /var/vcap/jobs/rabbitmq-server/packages/looking_glass/deps/lz4/ebin"
4749

rabbitmq-server-deployment-template.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ instance_groups:
6767
hipe_compile: false
6868
lazy_queue_explicit_gc_run_operation_threshold: 1000
6969
log_levels: info
70+
max_erlang_atoms: 5000000
71+
max_erlang_processes: 1048576
7072
mirroring_flow_control: true
7173
mirroring_sync_batch_size: 4096
7274
mnesia_base: /var/vcap/store/rabbitmq-server/mnesia

0 commit comments

Comments
 (0)