好消息 从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) AS COUNT FROM pg_stat_activity WHERE backend_type client backend AND application_name ! hologres AND usename ! holo_admin GROUP BY 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 LIMIT 1;
您可以执行如下语句查看当前已经为实例用户设置的限制连接数。
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该连接上的query select 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) 0 AND pid ! pg_backend_pid() AND backend_type client backend AND state idle AND application_name ! hologres AND usename ! holo_admin ;新功能预告
为了能让大家更好的管理连接以及可视化方式优雅的杀连接 后期将会在Holoweb开放连接数管理功能 届时您可以通过Holoweb直接查看当前实例所有的连接数信息 并且可以通过可以通过可视化的方式kill无效连接 方便快捷 简单易用
更多有关连接数的新功能将会陆续发布 请及时关注群或者社区最新消息
总结默认连接数的增加 可以方便业务去连接更多的应用 但并不意味着连接数是无限制使用的 我们需要合理的规划和正确的使用 才能带来事半功倍的效果 下面再为大家总结使用连接数时的最佳姿势
善用账号权限 尽量避免Superuser直接连接应用 以方便Superuser账号及时管理连接数应用上合理的设置连接池释放机制 同时也建议为单个用户预留连接限制 防止资源浪费定期清理空闲连接 防止连接泄漏或者空闲连接占用过多的资源感谢您的阅读 也欢迎使用体验Hologres 可以参考使用手册 同时也欢迎扫码加入钉群进行技术交流
前提条件 请您在购买前确保已完成注册和充值。详细操作请参见 如何注册公有云管...
摘要 元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者...
2021年3月24日,主题为《数据的世界,世界的数据》的星环科技2021春季新品发布会...
本文整理自直播《Hologres 数据导入/导出实践-王华峰(继儒)》 视频链接: https:/...
【51CTO.com快译】 数据可视化工具不断发展,提供更强大的功能,同时改善可访问...
在Python语言中有如下3种方法: 成员方法 类方法(classmethod) 静态方法(staticm...
Docker生成新镜像版本的两种方式 There are two ways Docker can generate new m...
信息化2.0时代提出开展智慧教育创新发展行动。2019年2月,中共中央、国务院印发...
建站 什么 虚拟主机 够用?这要看搭建的是什么类型的网站。比如个人博客类型的网...
从 10.0.0 版开始,异步迭代器就出现在 Node 中了,在本文中,我们将讨论异步迭...