好消息,Hologres默认连接数增加一倍啦!

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
简介: Hologres连接数的最佳实践!

好消息,从Hologres V0.10.25版本开始Hologres的默认连接数增加一倍啦!这就意味着,同等规格实例将会拥有更多的连接数,业务上也可以增加更多的应用去连接Hologres,无需再为连接数不够而担心啦!

下面我们来康康现在新版本的连接数和实例规格的映射关系吧:

实例规格

最大总连接数(个) ①

Superuser预留总连接数

32Core

256(128*2)

6

64Core

512(128*4)

6

96Core

768(128*6)

6

128Core

1024(128*8)

9

160Core

1280(128*10)

12

192Core

1536(128*12)

15

256Core

2048(128*16)

18

400Core

3200(128*25)

30

512Core

4096(128*32)

36

Hologres运行时的资源包括用于元数据管理的进程资源、用于查询服务的计算资源、用于优化数据写入的导入链路资源以及缓存服务。所有服务基于容器技术,通过多个并行的容器计算节点实现高性能并行计算能力。

Hologres基于实例的资源规格提供默认的最大连接数是针对大多数场景,经过调校和优化的默认配置。最大连接数不可修改,系统扩容或者缩容时,最大连接数同时调整为对应规格的默认连接数。

但是默认连接数的增加,并不意味着业务上可以无限制随便使用,因此,本文除了带来以上好消息外,还为大家准备了关于连接数使用的最佳实践,以下内容全是实操干货,建议收藏本文并反复阅读,以帮助业务更好的使用Hologres。

实践1:查看实例连接数相关信息

1.查看实例默认连接数

当您创建实例并连接开发工具之后,可以执行如下SQL语句查看当前实例版本的最大连接数

show max_connections;

说明:

1)以上SQL语句的执行结果展示的是单个Frontend节点最大连接数,最大总连接数=单Frontend节点最大连接数*Frontend节点数,上面映射表中最大连接数的括号中为具体每个节点的规格。

2)旧实例版本的查询结果还是会跟之前一致,若有需求可以提工单或者找对应技术支持升级至最新版本,连接数将会默认增加一倍。

2.查看DB连接数

可以通过如下命令查看当前DB的连接数

SELECT  datname
,COUNT(1)ASCOUNTFROM    pg_stat_activity
WHERE   backend_type ='client backend'AND     application_name !='hologres'AND     usename !='holo_admin'GROUPBY datname;

3.查看连接数状态

通过查询pg_stat_activity视图来获取所有JDBC或PSQL连接的状态。

select*from pg_stat_activity where backend_type ='client backend'and state ='<statename>';

其中statename是需要填写的状态参数名,包括以下几种:例如,您可以执行如下命令查询当前实例的空闲连接。

  • idle:空闲连接,表示进程在等待新的客户端命令。
  • active:活跃连接,表示进程正在执行查询操作。
  • idle in transaction:表示进程处于一个事务中,但是当前没有执行查询操作。
  • idle in transaction (aborted):表示进程处于一个事务中,该事务存在语句错误,并且进程当前没有执行查询操作。

示例查看空闲连接:

select*from pg_stat_activity where backend_type ='client backend'and state ='idle';

Holoweb等Hologres周边组件会通过JDBC的方式占用一定的连接数,如果您的连接数满足需求,无需关心此类连接数的占用。当SQL连接数长期接近或达到max_connections时,意味着您需要检查您的应用是否存在连接数泄漏情况,需要在应用端合理设置连接池大小,或者您也可以释放空闲连接。

注意:若是您的账号是superuser,则可以查看到当前实例下的所有连接,但是若您的账号不是superuser,则只能看到自己账号的相关连接。

实践2:管理员预留连接

Hologres会为Superuser预留连接,不同的实例规格预留的连接数不同,具体预留关系可以参考上表。

Superuser预留连接用于在连接数达到最大时对连接进行管理操作(如终止idle连接),普通用户的连接数最大为max_connections减去预留连接。

在实践中,不建议普通用户使用Superuser账号操作数据库,否则会导致连接全部占满,且无法通过管理渠道释放连接。(敲黑板,重点!重点!)

实践3:单个用户预留连接

Hologres支持为单个用户设置连接数上限,以防止某个用户占用过多连接造成资源浪费。

1.限制单个用户连接数。

ALTER ROLE "云账号ID" CONNECTION LIMIT<number>;


参数

说明

云账号ID

需要限制的账号ID,如果为RAM用户,需要在账号UID前加p4_。更多关于账号的说明,请参见账号概述

number

限制的连接数个数。

使用示例:

如下示例限制RAM用户283813xxxx,最多只有一个1连接。

ALTER ROLE "p4_283813xxxx" CONNECTION LIMIT1;


2.查看用户的限制连接数

您可以执行如下语句查看当前已经为实例用户设置的限制连接数。

SELECT rolname, rolconnlimit FROM pg_roles WHERE rolconnlimit <>-1;

查询示例结果如下:      

rolname | rolconnlimit 
---------------+-------------- p4_283813xxxx |1(1 row)

实践4:终止连接

如果您遇到如下情况,则说明系统连接数已经达到上限:

  • 连接数达到甚至超出max_connections的取值,您可以在Hologres管控台的监控告警页查看连接数。
  • 产生FATAL: sorry, too many clients already connection limit exceeded for superusers报错。
  • 产生FATAL: remaining connection slots are reserved for non-replication superuser connections报错。

当您有上述情况产生,可以通过Superuser账号连接实例,执行如下语句查看空闲连接是否过多。

select*from pg_stat_activity where backend_type ='client backend'and state ='idle';

如果查询结果显示空闲进程过多,并且确定是无用的空闲连接时,可以找到上述语句结果中的pid字段,并执行如下语句释放空闲连接。

-- cancel该连接上的queryselect pg_cancel_backend(<pid>);--结束对应的后台连接进程    select pg_terminate_backend(<pid>);--批量终止后台idle连接进程,释放连接SELECT pg_terminate_backend(pid),query
,datname
,usename
,application_name
,client_addr
,client_port
,backend_start
,state
FROM    pg_stat_activity
WHERE   length(query)>0AND     pid != pg_backend_pid()AND     backend_type ='client backend'AND     state ='idle'AND     application_name !='hologres'AND     usename !='holo_admin';

新功能预告


为了能让大家更好的管理连接以及可视化方式优雅的杀连接,后期将会在Holoweb开放连接数管理功能,届时您可以通过Holoweb直接查看当前实例所有的连接数信息,并且可以通过可以通过可视化的方式kill无效连接,方便快捷,简单易用!

更多有关连接数的新功能将会陆续发布,请及时关注群或者社区最新消息!

总结

默认连接数的增加,可以方便业务去连接更多的应用,但并不意味着连接数是无限制使用的,我们需要合理的规划和正确的使用,才能带来事半功倍的效果!下面再为大家总结使用连接数时的最佳姿势:

  1. 善用账号权限,尽量避免Superuser直接连接应用,以方便Superuser账号及时管理连接数
  2. 应用上合理的设置连接池释放机制,同时也建议为单个用户预留连接限制,防止资源浪费
  3. 定期清理空闲连接,防止连接泄漏或者空闲连接占用过多的资源


感谢您的阅读,也欢迎使用体验Hologres,可以参考使用手册,同时也欢迎扫码加入钉群进行技术交流:

holo公共云用户群.jpg


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之如何将Hologres字段转换为小写
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
SQL 分布式计算 数据库
畅捷通基于Flink的实时数仓落地实践
本文整理自畅捷通总架构师、阿里云MVP专家郑芸老师在 Flink Forward Asia 2023 中闭门会上的分享。
8317 15
畅捷通基于Flink的实时数仓落地实践
|
3月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之使用CTAS同步MySQL到Hologres时出现的时区差异,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
SQL 关系型数据库 MySQL
实时数仓 Hologres操作报错合集之Flink CTAS Source(Mysql) 表字段从可空改为非空的原因是什么
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
3月前
|
SQL 关系型数据库 测试技术
实时数仓 Hologres操作报错合集之执行Flink的sink操作时出现报错,是什么原因
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
5月前
|
存储 SQL 消息中间件
Hologres+Flink企业级实时数仓核心能力介绍
通过Hologres+Flink构建易用、统一的企业级实时数仓。
|
3月前
|
存储 SQL Java
实时数仓 Hologres产品使用合集之如何使用Flink的sink连接
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
5月前
|
Java 数据处理 Apache
实时计算 Flink版产品使用问题之lookup Join hologres的维表,是否可以指定查bitmap
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
消息中间件 SQL 大数据
实时计算 Flink版产品使用问题之Flink+DataHub+Hologres相比于Flink+Hologres加入了DataHub组件,有什么优势
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
JSON 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在使用CDAS语法同步MySQL数据到Hologres时,如果开启了字段类型宽容模式,MySQL中的JSON类型会被转换为什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

热门文章

最新文章

相关产品

  • 实时数仓 Hologres
  • 下一篇
    无影云桌面