ApsaraDB for Redis provides the client-output-buffer-limit pubsub parameter for you to specify a size limit for output buffers of Pub/Sub clients. If the data to be buffered for a Pub/Sub client exceeds the size limit, ApsaraDB for Redis closes the connection to the client. This prevents the buffered data from consuming an excessive amount of memory and ensures the performance of ApsaraDB for Redis.
Limits on output buffers in ApsaraDB for Redis
ApsaraDB for Redis allocates an output buffer in the memory to each client. After ApsaraDB for Redis processes the commands from clients, ApsaraDB for Redis temporarily stores command output data in output buffers and then sends the data to the clients. If you do not limit the data size in output buffers, a large amount of data may accumulate in output buffers. The data may eventually use up all the available memory and result in a service failure. This issue may occur in the following scenarios:
- A large amount of data needs to be returned for commands from clients.
- Message publishing outpaces message consumption.
You can set the client-output-buffer-limit pubsub parameter to a proper value to prevent the output buffers of Pub/Sub clients from consuming an excessive amount of memory.
Options
The client-output-buffer-limit pubsub parameter includes the following options: hard limit
, soft limit
, and soft seconds
.
hard limit
specifies a fixed limit. Unit: bytes. If the output buffer of a Pub/Sub client reaches or exceeds thehard limit
value, the client is immediately disconnected.soft limit
specifies a limit that depends on the time. Unit: bytes.soft seconds
specifies the amount of time to continuously trigger a soft limit. Unit: seconds. If the output buffer of a Pub/Sub client reaches or exceeds thesoft limit
value for a period of time in seconds that is specified by thesoft seconds
parameter, the client is disconnected.
In ApsaraDB for Redis, the default value of the hard limit
parameter is 33554432 bytes (or 32 MB), the default value of the soft limit
parameter is 8388608 bytes (or 8 MB), and the default value of the soft seconds
parameter is 60 seconds. You can customize the values based on your business requirements and client capacities.
Specify the parameter in the ApsaraDB for Redis console
- Log on to the ApsaraDB for Redis console and go to the Instances page. In the top navigation bar, select the region in which the instance that you want to manage resides. Then, find the instance and click its ID.
- In the left-side navigation pane, click System Parameters.
- On the page that appears, find the client-output-buffer-limit pubsub parameter and click Modify in the Actions column.
- In the dialog box that appears, perform the following steps:
- Specify the client-output-buffer-limit pubsub parameter based on the description in the Options section of this topic.
- Click OK.
Note After you complete these settings, you can view them in the Tair console. You can also use redis-cli to connect to the Tair instance and run the CONFIG GET client-output-buffer-limit command to view the settings. For more information about redis-cli, see Use redis-cli to connect to a Tair instance.
Related API operations
Operation | Description |
---|---|
DescribeParameters | Queries the configuration and operational parameters of an ApsaraDB for Redis instance. |
ModifyInstanceConfig | Modifies parameters of an ApsaraDB for Redis instance. |