Modifying System Limits Using System Scaling Parameters

You can increase certain system scaling limits using system scaling parameters. You can specify system scaling parameters using configuration keys when you create a software broker instance (see Setting Scaling Parameters Using Configuration Keys). You can also change system scaling parameters while the software broker is running using the Solace CLI (see Setting Scaling Parameters for a Single Software Event Broker and Setting Scaling Parameters for an HA Group).

For details about the minimum system resources required, see System Resource Requirements.

To see the current values of the system scaling parameters, run the show system command in the Solace CLI, and look at the Scaling section of the output:

solace-vmr> show system
System Uptime:  0d 0h 24m 9s
Last Restart Reason:  User shutdown

Scaling:
    Max Connections: 1000
    Max Queue Messages: 3000M

Topic Routing:
    Subscription Exceptions: Enabled
    Subscription Exceptions Defer: Enabled

You can configure the following system scaling parameters:

Maximum Number of Client Connections

You can increase the number of concurrent client connections supported by the event broker using the max-connections system scaling parameter. By default, the broker is limited to 100 concurrent client connections, but it can be provisioned for up to 200,000 connections assuming that sufficient system resources are provided.

PubSub+ Broker Default Concurrent Client Connections Maximum Possible Concurrent Client Connections
PubSub+ Standard 100 1,000
PubSub+ Enterprise 100 200,000

The following functionality is not available on software event brokers configured for a maximum of 100 client connections:

To use these features, configure your software event brokers with a higher maximum number of client connections.

For PubSub+ Standard Edition, if you set the max-connections system scaling parameter higher than the maximum supported, the broker will fail to start.

The number of current client connections cannot be changed on a broker configured as a monitoring node in an HA group.

A number of related system limits (for example, the maximum number of client usernames and subscriptions) are automatically scaled to values appropriate for the permitted number of client connections; see the System Limits and Alerts spreadsheet (available from the Solace Products site) for more information regarding those system limits.

Additional System Resources: Container Images

The minimum (and default) value for max-connections is 100. The resource requirements for this value are listed in the Resource Requirements for Container Images section.

Additional system resources are required to support larger numbers of concurrent client connections. The table below lists the minimum resources required and the additional resources required for higher values of max-connections. You must add the quantities for the higher values to the ones given for the default value of max-connections.

For example, for 100,000 connections you need:

  • 8 CPUs—this is the sum of the number of CPUs required for 100 connections (2 CPUs) plus the additional CPUs required for 100,000 connections (6 CPUs)
  • 29.7 GiB of Host Virtual Memory—this is the sum of the virtual memory required for 100 connections (3.4 GiB) plus the additional virtual memory required to support 100,000 connections (26.3 GiB)

System Resource

Maximum Client Connections
100
(default)
1,000 10,000 100,000 200,000
CPUs 2 + 0 + 2 + 6 + 10
Host Virtual Memory 3.4 GiB + 2.4 GiB + 8.2 GiB + 26.3 GiB + 47.4 GiB
Memory Cgroup Limit 2.5 GiB + 2.5 GiB + 8.8 GiB + 26.8 GiB + 47.8 GiB
Posix Shared Memory (/dev/shm) 1.0 GB + 0 + 0 + 0 + 0
Disk Space for Container Runtime Backing Store 1.5 GB + 0 + 0 + 0 + 0
Disk Space for storage-elements jail 1 GB + 0 + 0 + 0 + 0
var 0.2 GB + 0 + 0 + 0.8 GB + 0.8 GB
spool 1 GB + 0.5 GB + 1 GB + 1.5 GB + 2 GB
adb 1.2 GB + 0.4 GB + 0.5 GB + 1 GB + 1.6 GB
adb-backup 0.6 GB + 0.4 GB + 0.9 GB + 1.9 GB + 3.6 GB
diagnostics 1 GB + 0 + 0 + 0 + 0

Setting the Number of Concurrent Open Files

To ensure reliable operation of the event broker, you must also increase the maximum number of concurrent open files per process when the maximum number of client connections is increased. The maximum number of concurrent open files for the container processes is governed by the nofiles resource limit. Most container runtimes support setting rlimit values using the ulimit parameter when creating a container. For example, in Docker Engine and Podman, for 10,000 client connections, add the --ulimit nofile=2448:42192 command line parameter when you create the container.

Resource Limit Maximum Client Connections
100 1,000 10,000 100,000 200,000
nofiles 2448:6592 2448:10192 2448:42192 2448:222192 2448:422192

Additional System Resources: Virtual Machine Images

The minimum (and default) value for max-connections is 100. The resource requirements for this value are listed in the Resource Requirements for Virtual Machine Images section.

Additional system resources are required to support larger numbers of concurrent client connections. The table below lists the minimum resources required and the additional resources required for higher values of max-connections. You must add the quantities for the higher values to the ones given for the default value of max-connections.

For example, for 100,000 connections you need:

  • 8 CPUs—this is the sum of the number of CPUs required for 100 connections (2 CPUs) plus the additional CPUs required for 100,000 connections (6 CPUs)
  • 28 GiB of Physical Memory—this is the sum of the RAM required for 100 connections (1 GiB) plus the additional RAM required to support 100,000 connections (27 GiB)
System Resource Maximum Client Connections
100
(default)
1,000 10,000 100,000 200,000
CPUs 2 + 0 + 2 + 6 + 10
Physical Memory (RAM) 1 GiB + 3 GiB + 11 GiB + 27 GiB + 55 GiB
Primary Disk 30 GB + 0 + 0 + 0 + 0
Disk Space for storage-elements jail 1 GB + 0 + 0 + 0 + 0
var 0.2 GB + 0 + 0 + 0.8 GB + 0.8 GB
spool 1 GB + 0.5 GB + 1 GB + 1.5 GB + 2 GB
adb 1.2 GB + 0.4 GB + 0.5 GB + 1 GB + 1.6 GB
adb-backup 0.6 GB + 0.4 GB + 0.9 GB + 1.9 GB + 3.6 GB
diagnostics 2 GB + 6 GB + 8 GB + 18 GB + 18 GB

Maximum Number of Queue Messages

You can increase the number of queue messages (references to messages queued for delivery to consumers) supported by the event broker using the max-queue-messages system scaling parameter. By default, the broker is limited to 100 million queue messages and can be provisioned up to 3 billion, provided sufficient system resources are provided.

PubSub+ Broker Default Maximum Queue Messages Maximum Possible Queue Messages
PubSub+ Standard 100,000,000 240,000,000
PubSub+ Enterprise 100,000,000 3,000,000,000

For PubSub+ Standard Edition, if you set the max-queue-messages system scaling parameter higher than the maximum supported, the broker will fail to start.

The maximum number of queue messages cannot be changed on a broker configured as a monitoring node in an HA group.

Additional System Resources: Container Images

The minimum (and default) value for max-queue-messages is 100 (meaning 100 million). The resource requirements for this value are listed in the Resource Requirements for Container Images section.

Additional system resources are required to support larger numbers of queue messages. The table below lists the minimum resources required and the additional resources required for higher values of max-queue-messages. You must add the quantities for the higher values to the ones given for the default value of max-queue-messages.

For example, for 240 million queue messages you need:

  • 4.0 GiB of Host Virtual Memory—this is the sum of the memory required for 100 million queue messages (3.4 GiB) plus the additional memory required to support 240 million queue messages (0.6 GiB)
System Resource Maximum Queue Messages
(in millions)
100
(default)
240 3000
CPUs 2 + 0 + 0
Host Virtual Memory 3.4 GiB + 0.6 GiB + 8.7 GiB
Memory Cgroup Limit 2.5 GiB + 0.6 GiB + 9 GiB
Posix Shared Memory (/dev/shm) 1.0 GB + 0 + 0
Disk Space for Container Runtime Backing Store 1.5 GB + 0 + 0
Disk Space for storage-elements jail 1 GB + 0 + 0
var 0.2 GB + 0 + 0
spool 1 GB + 0 GB + 5 GB
adb 1.2 GB + 0.4 GB + 5 GB
adb-backup 0.6 GB + 0.8 GB + 12 GB
diagnostics 1 GB + 0 + 0

Additional System Resources: Virtual Machine Images

The minimum (and default) value for max-queue-messages is 100 (meaning 100 million). The resource requirements for this value are listed in the Resource Requirements for Virtual Machine Images section.

Additional system resources are required to support larger numbers of queue messages. The table below lists the minimum resources required and the additional resources required for higher values of max-queue-messages. You must add the quantities for the higher values to the ones given for the default value of max-queue-messages.

For example, for 3 billion queue messages you need:

  • 9 GiB of Physical Memory—this is the sum of the RAM required for 100 million queue messages (1 GiB) plus the additional RAM required to support 3 billion queue messages (8 GiB)
System Resource   Maximum Queue Messages (in millions)
100
(default)
240 3000
CPUs 2 + 0 + 0
Physical Memory (RAM) 1 GiB + 0 + 8 GiB
Primary Disk 30 GB + 0 + 0
Disk Space for storage-elements jail 1 GB + 0 + 0
var 0.2 GB + 0 + 0
spool 1 GB + 0 + 5 GB
adb 1.2 GB + 0.4 GB + 5 GB
adb-backup 0.6 GB + 0.8 GB + 12 GB

diagnostics

2 GB + 0 + 8 GB