当前位置:主页 > 查看内容

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

发布时间:2021-07-13 00:00| 位朋友查看

简介:好消息 从Hologres V0.10.25版本开始 Hologres的默认连接数增加一倍啦 这就意味着 同等规格实例将会拥有更多的连接数 业务上也可以增加更多的应用去连接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) 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;


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该连接上的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 可以参考使用手册 同时也欢迎扫码加入钉群进行技术交流

holo公共云用户群.jpg



本文转自网络,原文链接:https://developer.aliyun.com/article/785253
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐