配置数据访问代理连接

连接是数据库的重要资源,合理的使用数据库连接资源能使应用程序的资源利用达到最佳状态。

数据访问代理实例内部一共有两种类型的连接,分别是:

  • 前端连接:应用程序代码连接数据访问代理实例的连接配置。

  • 后端连接:数据访问代理实例连接后端真实物理数据库的连接配置。

前端连接

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

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

重要

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

应用与数据访问代理的连接底层实现是通过 SLB 创建的,而 SLB 有 900 s 的空闲超时机制,即 900 s 内连接没有流量的话,连接会被断开。所以应用使用时可以设置连接池的空闲超时时间小于 900 s,或者通过心跳方式保持连接。

后端连接

数据访问代理实例的每个节点内部都会创建后端连接池,自动管理和维护到 RDS/OceanBase 实例中物理库的后端连接。因此,数据访问代理实例中后端连接池的最大连接数与具体数据库实例支持的最大连接数直接相关。

  • 您可参照以下公式来计算数据访问代理实例中后端连接池的最大连接数:

    数据访问代理实例后端连接池的最大连接数 = 向下取整(数据库最大连接总数 / 物理分库数 / 数据访问代理实例节点数),例如某用户搭配购买了如下规格的 RDS 实例和数据访问代理实例:
    • 2 个 RDS 实例,包含 100 个物理分库,规格为 4C16G × 2,最大连接数为 4000 × 2;

    • 1 个数据访问代理专享实例,规格为 16C32G(每 4C8G 为 1 个数据访问代理节点,即该实例包含 4 个数据访问代理节点)。

  • 按照以下公式可计算出数据访问代理实例中后端连接池的最大连接数:

    数据访问代理实例后端连接池的最大连接数 = 向下取整(8000 / 100 / 4)= 20
    说明

    最大连接数的评估仅是为了知道最大连接数的设置上限,实际日常使用中,为了减轻数据库实例的连接压力,建议留出一定的缓冲余地,使实际最大连接数小于数据库的上限值。

如何调整后端连接配置

请参考使用文档:管理物理数据库连接参数