全部产品
云市场
云游戏

PolarDB-X实例中的连接

更新时间:2020-07-02 09:38:30

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

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

  • 后端连接:由PolarDB-X实例中的节点建立的,到后端私有制RDS实例中物理库的连接。

DRDS 连接

前端连接

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

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

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

后端连接

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

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

例如,某用户搭配购买了如下规格的私有制RDS实例和PolarDB-X实例:

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

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

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

注意:

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

  • 建议PolarDB-X实例中的数据库创建在私有制RDS实例上,即私有制RDS实例上不应创建其它应用或其它PolarDB-X实例的数据库。

调整后端连接数

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

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

    调整数据库连接池信息

前后端连接的关系

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

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

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

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

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

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