全部产品
分布式关系型数据库 DRDS

DRDS 实例中的连接

更新时间:2017-08-08 10:29:13   分享:   

当应用程序连接 DRDS 实例执行操作时,从 DRDS 实例的角度看,会有两种类型的连接:

  • 前端连接:由应用程序建立的,到 DRDS 实例中逻辑库的连接;

  • 后端连接:由 DRDS 实例中的节点建立的,到后端 RDS 实例中物理库的连接。

DRDS 连接

前端连接

前端连接的数量理论上仅受限于 DRDS 实例节点可用的内存大小和网络连接数。但在实际的应用场景中,应用程序连接到 DRDS 实例时,通常会管理有限数量的连接来执行请求的操作,并不会维持很高并发量的持久化长连接(例如,数万个并发的长连接),因此可认为 DRDS 实例能接受的前端连接数量是无限制的。

由于前端连接数量不受限制,可以允许有大量空闲连接存在,因此适用于业务端部署应用程序的服务器数量较多,需要同时保持连接到 DRDS 实例的场景。

注意:虽然前端连接的数量可被认为是无限制的,但从前端连接获取的操作请求是由 DRDS 实例的内部线程通过后端连接实际执行,而内部线程和后端连接的数量有限,因此 DRDS 实例处理请求的整体并发度是有限的。

后端连接

DRDS 实例的每个节点内部都会创建后端连接池,自动管理和维护到 RDS 实例中物理库的后端连接。因此,DRDS 实例中后端连接池的最大连接数与 RDS 实例支持的最大连接数直接相关。可参照以下公式来计算 DRDS 实例中后端连接池的最大连接数:

  1. DRDS 实例后端连接池的最大连接数 = 向下取整(RDS 实例最大连接数 / RDS 实例物理分库数 / DRDS 实例节点数)

例如,某用户搭配购买了如下规格的 RDS 实例和 DRDS 实例:

  • 1个 RDS 实例,包含8个物理分库,规格为 4Core16G,最大连接数为 4000;
  • 1个 DRDS 专享实例,规格为 32Core32G(每 2Core2G 为1个 DRDS 节点,即该实例包含16个 DRDS 节点)。

按照上述公式可计算出 DRDS 实例中后端连接池的最大连接数:

  1. DRDS 实例后端连接池的最大连接数 = FLOOR(4000 / 8 / 16) = FLOOR(31.25) = 31

注意:

  • 上述公式计算的结果为 DRDS 实例中后端连接池的最大连接数的上限。实际使用中,为了减轻 RDS 实例的连接压力,留出一定的缓冲余地,DRDS 实例会适当调整后端连接池的最大连接数,使其小于上限值。

  • 建议 DRDS 实例中的数据库创建在专用的 RDS 实例上,即专用 RDS 实例上不应创建其它应用或其它 DRDS 实例的数据库。

调整后端连接数

若增大 RDS 实例的最大连接数后,想调整 DRDS 实例中后端连接池的最大连接数,请按以下步骤操作。

  1. 登录 DRDS 控制台,在数据库列表页选择相应的数据库。
  2. 在数据库基本信息页,单击调整数据库连接池信息。DRDS 控制台会自动进行调整。

    调整数据库连接池信息

前后端连接的关系

在应用程序与 DRDS 实例建立了前端连接并发出 SQL 语句的执行请求后,DRDS 实例节点会异步地处理请求,并通过内部后端连接池获取后端连接,在一个或多个物理库上执行经过优化处理的 SQL 语句。

由于 DRDS 实例节点内部为异步的处理流程,前端连接和后端连接并无绑定关系,因此在通常的短事务和简单查询情况下,少量的后端连接有能力处理并发量较高的前端连接所带来的大量请求。这也是在 DRDS 中应关注 QPS 指标,而非并发连接数的原因。

虽然前端连接数量可被认为近乎无限制,但 DRDS 实例节点内部的后端连接池所维护的最大连接数是有限的(参见上文“后端连接”一节的说明),因此在实际的应用场景中,需要注意以下几点:

  • 应用程序中应尽量避免长的(或称为大的)事务,以免其长时间未提交或回滚而占用后端连接,造成后端连接池紧张或达到上限,降低整体的并发处理能力,增加响应时间;

  • 应监控并优化或消除在 DRDS 中执行的慢查询,以免其长时间执行而占用后端连接,造成后端连接池紧张或达到上限。这种情况下 DRDS 实例或 RDS 实例会面临更大的处理压力,导致整体的并发处理能力下降,增加响应时间,还可能因为执行超时导致 SQL 执行失败率上升。对于慢查询的排查和优化,请参考 排查 DRDS 慢 SQLSQL 优化

  • 若在正常使用连接和执行查询的情况下,对后端连接的使用仍然达到了 DRDS 实例中后端连接池的最大连接数,请联系客服协助解决。

本文导读目录
本文导读目录
以上内容是否对您有帮助?