用户连接数配置问题咨询

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】observer-4.3.5
【问题描述】在业务租户中创建用户指定max_connections失效是正常的吗?
【复现路径】
1.我们日常创建用户的操作是
create user e_xxxx identified by ‘xxxx’ with max_user_connections 2500;.
2.observer中配置的max_user_connections是0
3.实际情况是业务用户连接数将近6000,超过了在创建用户时指定的最大连接数配置

  1. mysql.user表里面看max_user_connections 是2500,这个是不是没有意义?

问题:

  1. mysql.user表中的max_user_connections 对 用户连接限制有影响吗?

2.如何分别针对单个用户来限制其对应的最大连接数?
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

4 个赞

在这个问题中,您提到在 OceanBase 生产环境中创建用户时指定了 max_user_connections 但是该设置似乎不起作用,实际连接数超过了设定值。这可能涉及到 OceanBase 中的权限管理与资源控制配置,而非 MySQL 的配置。OceanBase 使用的是与 MySQL 兼容的语法,但在某些特性和行为上可能会有所不同。为了更好地帮助您解决问题,我们可以通过 obdiag 工具来收集相关信息。

由于 obdiag 目前提供的日志采集场景和根因分析场景中并没有直接与连接数限制相关的选项,我们可以从更广泛的视角来收集日志,比如查看集群的基础信息和 SQL 审计记录,这有助于我们理解当前系统的配置情况以及用户连接的行为模式。

日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base

此外,收集一段时间内的 SQL 审计日志也有助于分析用户的实际连接情况:
日志采集场景: SQL Audit
日志采集命令: obdiag gather log --log-type=sql_audit --start-time="2023-10-01 00:00:00" --end-time="2023-10-02 00:00:00"

请您执行上述命令并上传收集到的日志压缩包给我们。同时,为了进一步了解您的环境,请回答以下几个问题:

  1. 您当前使用的 OceanBase 版本是什么?
  2. 创建用户时的具体命令是什么?
  3. mysql.user 表中,目标用户的 max_user_connections 字段的值是多少?
  4. 实际观察到的最大连接数是多少?
  5. 是否有其他任何与用户连接数相关的配置或限制?
  6. 有没有尝试过通过其他方式(如使用租户级资源配置)来限制用户的最大连接数?

感谢您的配合,这些信息对我们诊断问题非常有帮助。

附上敏捷诊断工具 obdiag 使用帮助链接

4 个赞

创建用户with max_user_connections 2500;应该是不生效的
看下这个变量大小show variables like ‘%max_user_connections%’;

4 个赞

这个是0 ,如果创建用户的时候不生效,那么在observer中,无法对不同的用户配置不同的最大连接数限制了?

3 个赞

可以在不同用户下修改这个变量。

  • MySQL 用户租户需要拥有 SUPERALTER SYSTEM 权限才能修改 Global 系统变量的值。
4 个赞

签到…

3 个赞

mysql租户的普通用户拥有SUPER或ALTER SYSTEM权限,然后修改global max_user_connections变量就可以实现不同用户的连接数限制?
老师我这么理解对吗? 修改完这个global系统变量之后需要重启observer吗?

3 个赞

max user connections设置的0

3 个赞

不需要

3 个赞

给普通用户授予SUPER系统权限,通过普通用户修改 max_user_connections,影响的是所有用户的最大连接数。

1 个赞

你这边是测试修改后发现影响的所有用户连接数么。