首批通过分布式安全可靠测评,为关键业务系统打造
设置租户最大连接数
更新时间:2026-06-21 16:53:08
由于连接会占用一定的资源,大量的长连接会影响小规格租户的稳定性,OceanBase 数据库支持通过配置项或系统变量为租户设置最大连接数。
与租户最大连接数相关的配置项或变量如下:
max_connections系统变量
max_connections用于控制整个租户的最大连接数,当前仅 MySQL 模式支持该系统变量。其默认值为2147483647,取值范围为 [1,2147483647]。该变量修改后,需要重启 OBServer 节点才能生效。max_user_connections系统变量
max_user_connections用于控制租户内单个用户的最大并发连接数,当前仅 MySQL 模式支持该系统变量。其默认值为0,表示不限制连接数;当值大于0时,以实际设置的值为准,取值范围为 [0,4294967295]。该变量修改后,需要重启 OBServer 节点才能生效。_resource_limit_max_session_num租户级隐藏配置项
_resource_limit_max_session_num用于控制用户租户内普通用户的最大并发连接数,该配置项修改后立即生效,不需要重启 OBServer 节点。其默认值为0,取值范围为 [0,1000000]。该配置项一般不需要修改。当隐藏配置项
_resource_limit_max_session_num的值大于0时,以实际设置的值为准;当隐藏配置项_resource_limit_max_session_num的值为0时,系统内部会自动按照一定的规则计算出最大连接数。具体计算规则如下:用户租户并发连接数上限 = MAX(100, 租户实际内存 * 5%/(100 KB))
其中:
租户实际内存:创建租户时分配的资源池中资源单元的内存(
memory_size)减去对应 Meta 租户的内存后的值。用户租户与其对应的 Meta 租户的内存分配说明,参见 租户内部内存管理。100:连接数下限。100 KB:根据经验计算出的单个会话可能占用的内存。
根据该算法,如果用户租户的内存规格(
memory_size)为 3 GB,对应 Meta 租户的内存为 1 GB,则租户实际内存为3 GB - 1 GB = 2 GB,则该租户的最大连接数为MAX(100, 2 GB * 5%/(100 KB))= 1000。
注意事项
在 OceanBase 数据库中,名称以 "_" 开头的配置项称为隐藏配置项,仅供开发人员在故障排查或紧急运维时使用。
使用限制
仅 MySQL 租户可通过系统变量
max_connections和max_user_connections调整租户或租户内用户的最大连接数。为了防止因出现大量长连接而导致的运维人员无法登录的问题,配置项
_resource_limit_max_session_num的值对sys租户或用户租户的管理员用户(MySQL 模式默认为root用户,Oracle 模式默认为SYS用户)不受限。
MySQL 租户查看本租户的最大连接数
租户管理员登录到集群的 MySQL 租户。
查看租户的最大连接数。
查看整个租户的最大连接数
obclient> SHOW VARIABLES LIKE 'max_connections';或者
obclient> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME = 'max_connections';查询结果如下:
+-----------------+------------+ | Variable_name | Value | +-----------------+------------+ | max_connections | 2147483647 | +-----------------+------------+ 1 row in set查看租户内单个用户的最大并发连接数
obclient> SHOW VARIABLES LIKE 'max_user_connections';或者
obclient> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME = 'max_user_connections';查询结果如下:
+----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | max_user_connections | 0 | +----------------------+-------+ 1 row in set查看租户内普通用户总的最大并发连接数
obclient> SELECT * FROM oceanbase.GV$OB_PARAMETERS WHERE NAME LIKE '_resource_limit_max_session_num';说明
隐藏配置项在未修改前(即为默认值)无法通过
SHOW语句查询,只能通过GV$OB_PARAMETERS视图查询。如果该隐藏配置项已经被修改为非默认值,则可以通过SHOW语句查询。查询结果如下:
+----------------+----------+-------+--------+-----------+---------------------------------+-----------+-------+-----------------------------------------------------------------+----------------+-------------------+---------------+-----------+ | SVR_IP | SVR_PORT | ZONE | SCOPE | TENANT_ID | NAME | DATA_TYPE | VALUE | INFO | SECTION | EDIT_LEVEL | DEFAULT_VALUE | ISDEFAULT | +----------------+----------+-------+--------+-----------+---------------------------------+-----------+------- +-----------------------------------------------------------------+----------------+-------------------+---------------+-----------+ | 172.xx.xxx.xxx | 2882 | zone1 | TENANT | 1004 | _resource_limit_max_session_num | INT | 0 | the maximum number of sessions that can be created concurrently | RESOURCE_LIMIT | DYNAMIC_EFFECTIVE | 0 | YES | +----------------+----------+-------+--------+-----------+---------------------------------+-----------+-------+-----------------------------------------------------------------+----------------+-------------------+---------------+-----------+ 1 row in set查询结果中,
VALUE列对应的值即为对应的配置项的值。有关视图
GV$OB_PARAMETERS的更多介绍,请参见 GV$OB_PARAMETERS。
设置租户的最大连接数。
设置整个租户的最大连接数
obclient> SET GLOBAL max_connections = 1000;执行成功后,需要重启 OBServer 节点才能生效。
设置租户内单个用户的最大并发连接数
obclient> SET GLOBAL max_user_connections = 50;执行成功后,需要重启 OBServer 节点才能生效。
设置租户内普通用户总的最大并发连接数
obclient> ALTER SYSTEM SET _resource_limit_max_session_num = 100;说明
如果当前租户同时设置了
_resource_limit_max_session_num、max_user_connections和max_connections的值,则对于某个普通用户,其并发连接数只要达到其中一个值,即无法再建立新的连接;对于管理员用户,其并发连接数只要达到max_user_connections或max_connections的其中一个值,即无法再建立新的连接。
Oracle 租户查看本租户相关的最大并发连接数
租户管理员登录到集群的 Oracle 租户。
通过视图查看租户内普通用户的最大并发连接数。
obclient> SELECT * FROM SYS.GV$OB_PARAMETERS WHERE NAME LIKE '_resource_limit_max_session_num';说明
隐藏配置项在未修改前(即为默认值)无法通过
SHOW语句查询,只能通过GV$OB_PARAMETERS视图查询。如果该隐藏配置项已经被修改为非默认值,则可以通过SHOW语句查询。查询结果如下:
+----------------+----------+-------+--------+-----------+---------------------------------+-----------+-------+-----------------------------------------------------------------+----------------+-------------------+---------------+-----------+ | SVR_IP | SVR_PORT | ZONE | SCOPE | TENANT_ID | NAME | DATA_TYPE | VALUE | INFO | SECTION | EDIT_LEVEL | DEFAULT_VALUE | ISDEFAULT | +----------------+----------+-------+--------+-----------+---------------------------------+-----------+-------+-----------------------------------------------------------------+----------------+-------------------+---------------+-----------+ | 172.xx.xxx.xxx | 2882 | zone1 | TENANT | 1004 | _resource_limit_max_session_num | INT | 0 | the maximum number of sessions that can be created concurrently | RESOURCE_LIMIT | DYNAMIC_EFFECTIVE | 0 | YES | +----------------+----------+-------+--------+-----------+---------------------------------+-----------+-------+-----------------------------------------------------------------+----------------+-------------------+---------------+-----------+ 1 row in set查询结果中,
VALUE列对应的值即为对应的配置项的值。有关视图
GV$OB_PARAMETERS的更多介绍,请参见 GV$OB_PARAMETERS。设置租户内普通用户的最大并发连接数。
obclient> ALTER SYSTEM SET "_resource_limit_max_session_num" = 100;
相关文档
关于配置项和变量的更多介绍,请参见如下信息: