drds连接池

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

DRDS连接池
drds是一款基于阿里云rds的数据库中间件,总结一下关于drds连接池的理解
image

从DRDS来看,有两个连接池:
*1、 应用到DRDS的连接池
2、 DRDS到后端RDS的连接池*

应用到DRDS的连接池
目的:提高应用性能,减轻数据库负载
作用:
1、资源复用:连接可以重复利用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,同时增进了系统的平稳性。

2、提高系统响应效率:连接的初始化工作完成后,所有请求可以直接利用现有连接,避免了连接初始化和释放的开销,提高了系统的响应效率。

3、避免连接泄漏:连接池可根据预设的回收策略,强制回收连接,从而避免了连接资源泄漏

某专有云采用的是德鲁伊连接池,这也是官网推荐的连接池类型。配置信息如下图:
image

drds之前出现过节点连接数不均衡问题,某几个节点的压力过大,导致docker连接异常。
解决过程:
1、修改应用到drds的探活语句,之前探活语句查看执行计划发现是打到了drds下面rds的 0 号库上,导致drds的0号库qps压力高。现在修改语句只探活到drds层面,这个主要是针对0号库压力高的问题。
2、升级德鲁伊版本,并且设置固定时间关闭连接的参数phyTimeoutMillis升级后观察连接数还是比较平均的。当然drds也有自己的slb负载均衡,通过相应的算法来将应用连接数分配到各个docker节点上。

DRDS到后端RDS的连接池
DRDS到后端的连接池是指:从每个DRDS节点到后端RDS每个分库的连接池。这个连接池是在drds的docker节点上的。
DRDS后端连接池的大小设置是与后端RDS的最大连接数相关的,参考最大连接处设置公式如下:

最大连接数=RDS实例最大连接数/DRDS节点数/RDS实例分库数(每个RDS上的物理分库数)

改值只是一个参考值

如何修改该值:
1、 通过drds manager中实用功能可以自定义该值,注意appname是show datasources中的schema字段,也可以通过drdsmanager查询该值。
2、 通过drds console进行调整实例连接池信息,会根据后端RDS实例进行调整,并且会reload从drd到rds的连接,这是自动调整的,无法自定义设置。

相关问题:
客户在进行压测的过程导致drds的0号库连接池被打满,具体报错理解为connection $RDS_0号库 full。想要咨询并且修改drds到后端rds的连接数。

针对该问题,首先建议客户需要优化对应的慢SQL,并且0号库rds的实例连接数相比其他的数据库连接数配置要低,连接池更容易因为慢sql而被打满,或者说有没有一些大事务、长事务等占用连接不释放等。

应用到drds和drds到rds的两段连接数是异步的,没有绑定关系的。前端到drds的连接数,drds首先接住这些连接,然后通过自己的转发机制,异步转发到节点上去执行,每个节点都会有一个连接池到rds上分库的连接,这样也不能保证是哪个节点的连接池被打满。这也跟业务相关,假如压测中很多场景是多访问0号库的业务,也会导致0号库出现这个问题,这些都是要去考虑的。

实例连接数是可以增加的,但是不能一味的增加连接数,首先应该从问题根源上确认是否有导致出现连接数打满的问题,需要去优化的要做好优化,最后考虑去升级规格。避免出现一直升级连接数还是被打满的问题。

相关实践学习
Polardb-x 弹性伸缩实验
本实验主要介绍如何对PolarDB-X进行手动收缩扩容,了解PolarDB-X 中各个节点的含义,以及如何对不同配置的PolarDB-x 进行压测。
目录
相关文章
|
2月前
|
SQL 运维 监控
drds相关的问题
drds相关的问题
25 5
|
2月前
|
关系型数据库 中间件 数据库连接
drds读写分离与只读实例
drds读写分离与只读实例
30 3
|
7月前
|
存储 SQL 关系型数据库
PolarDB-X 与 DRDS 有什么区别?2
PolarDB-X 与 DRDS 有什么区别?2
65 1
|
7月前
|
SQL 关系型数据库 MySQL
PolarDB-X 与 DRDS 有什么区别?1
PolarDB-X 与 DRDS 有什么区别?1
69 1
|
7月前
|
监控 关系型数据库 数据库
RDS PostgreSQL内置连接池PgBouncer
2023年7月,阿里云RDS PostgreSQL支持内置数据库连接池PgBouncer,本篇文章从以下角度探讨PgBouncer:1. PgBouncer是什么;2. 应用场景 ;3. 性能对比;4. 如何使用;5. 总结
|
SQL 负载均衡 算法
聊聊 Sharding-JDBC 实现 读写分离~
聊聊 Sharding-JDBC 实现 读写分离~
|
3天前
|
SQL 存储 关系型数据库
PolarDB-X 与 DRDS 有什么区别?
PolarDB-X 2.0(以下简称PolarDB-X)与DRDS(DRDS也称为PolarDB-X 1.0)都是阿里云上的分布式数据库产品。看起来她们都是Share-Nothing的架构,用水平扩展来解决单机数据库瓶颈问题。很多同学因此会有疑惑,她们俩到底有什么样的区别?DRDS,其本质是搭建在标...
4 0
PolarDB-X 与 DRDS 有什么区别?
|
3天前
|
存储 关系型数据库 MySQL
PolarDB-X 与 X-DB、PolarDB
PolarDB-X与X-DB、PolarDB都是阿里巴巴的数据库产品。那么他们之间有什么样的关系?要回答这个问题,我们首先要搞明白,什么是X-DB。什么是X-DB?简言之,X-DB主要指在MySQL的基础上基于XEngine引擎打造的分布式跨AZ高可用数据库。X-DB的核心能力之一是基于Paxos跨...
8 1
PolarDB-X 与 X-DB、PolarDB
|
3天前
|
存储 关系型数据库 分布式数据库
配置 pgcat for PolarDB 读写分离连接池
背景PolarDB 开源数据库支持云原生存算分离分布式架构, 一份存储支持多个计算节点, 目前是一写多读的架构. 内核已经很强大了, 怎么实现业务透明的读写分离, 还缺一个连接池, pgcat是不错的选择.pgcat支持连接池、sharding、读写负载均衡等, 更多功能请参考其官网https://...
|
SQL 负载均衡 算法
使用Sharding-JDBC 实现Mysql读写分离
使用Sharding-JDBC 实现Mysql读写分离
使用Sharding-JDBC 实现Mysql读写分离