【问题背景】

某客户出现如下错误:

YAS-06004: maximum number of sessions exceeded

即数据库会话连接数超出限制,导致新连接无法建立,影响业务运行。

【影响分析】

后续连接被拒绝;

应用报错,用户无法登录系统;

若为测试环境,大量并发可能影响评估结果。

【解决方案】

步骤一:查找连接过多的用户

查看监听日志,识别高频连接用户:

cat $YASDB_DATA/log/listener/listener.log

如发现某业务用户连接数异常,应先关闭相关服务或接口。
image.png

步骤二:创建并应用连接数限制策略(Profile)
image.png

YashanDB 支持通过 PROFILE 对用户资源进行限制。

① 创建 profile:

DROP PROFILE cur_sess_profile;
CREATE PROFILE cur_sess_profile LIMIT sessions_per_user 200;

② 应用 profile 到目标用户:

ALTER USER mydata PROFILE cur_sess_profile;

默认 profile 对连接数无限制,因此必须手动指定。
image.png

步骤三:业务侧优化连接策略

连接数本质是资源问题,从数据库侧限制只是“限流”。根治还需从业务入手,例如:

使用连接池;

合理设置连接超时;

避免频繁新建连接。

【补充说明】

PROFILE 还支持限制密码策略、IP 黑白名单等;

可通过 DBA_USERS 和 DBA_PROFILES 查询用户与其资源策略的关系。

【结语】

通过限制用户连接数,可以在一定程度上避免连接爆炸引起的数据库异常。但从根本上解决问题,仍需配合业务架构进行优化。


数据库砖家
1 声望0 粉丝