Postgres-XL 调优

2022-05-06 00:00:00 数据 集群 节点 故障 性能

Postgresql-xl 节点介绍
转载: (19条消息) Postgresql-xl 结构_有梦为马 随处可栖-CSDN博客_postgresql xl

GTM

全局事务控制节点,保证集群数据一致性,与coordinator节点和datanode节点不断通信,是整个集群的核心节点,只存在一个,可以存在一个GTM standby节点,对GTM实时备份。GTM一旦故障,整个集群立刻无法访问,此时可以切换到GTM standby节点上。如果部署了GTM standby节点,就应该同时部署GTM proxy,一般和coordinator datanode部署在同一台服务器上。GTM proxy的作用,代理coordinator datanode对GTM的访问,起到减轻GTM负载的作用,另外一个重要的作用是帮助完成GTM的故障切换,当GTM发生故障后,GTM standby成为新的GTM,此时coordinator datanode节点并不需要重新指定GTM地址,只需要GTM Proxy重新连接到新的GTM地址即可。

Coordinator

接收数据访问请求的节点,本质上是由PG后台进程组成。接收的一条查询后,coordinator节点执行查询计划,然后会根据查询数据涉及的数据节点将查询分发给相关的数据节点。写入数据时,也会根据不同的数据分布策略将数据写入相关的节点。可以说coordinator节点上保存着集群的全局数据位置,coordinator节点可以任意扩展,各个节点之间除了访问地址不同以外是完全对等的,通过一个节点更新的数据可以在另一个节点上立刻看到。每个coordinator节点可以配置一个对应的standby节点,避免单点故障。

Datanode

实际存取数据的节点,接收coordinator的请求并执行SQL语句存取数据,节点之间也会互相通信。一般的,一个节点上的数据并不是全局的,数据节点不直接对外提供数据访问。一个表的数据在数据节点上的分布存在两种模式:复制模式和分片模式:复制模式下,一个表的数据在指定节点上存在多个副本;分片模式下,一个表的数据按照一定的规则分布在多个数据节点上,这些节点共同保存一份完整的数据。

Postgresql-xl 调优
1. 排查Coordinator 的上游,是否能发出高traffic,比如,检查上游heplify server 的 goroutione数量等。

2. 排查 Coordinator 的上游 和 pg-xl 的 TCP 跑道是否足够宽

1> 在 cr 上抓包,看是否有存在,TCP window size 为 0 和 TCP retransmission 的情况

2> 根据需要,调整 TCP IPV4 setting 保证 有足够的 receive send buffer 为每一个TCP socket

net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_mem

3. 查看 pg-xl 的瓶颈在哪里?

写速率: 1.6G/Min

1> 查看在创建表时,是否可以删除一些不必要的索引(index)

2> pg-xl 配置参数的调优

process numbers, Memory, IO-WAL, IO-Checkpointer, Two-phase Commit

3> 查看 Lock 等待状态

"select * from pg_stat_activities" 查看是否有些进程被stuck 由于等待锁

解决方案: 更改了 分布式方案 DISTRIBUTE BY ROUNDROBIN => DISTRIBUTE BY MODUBO(tag)

4> 查看IO 性能

现象,使用glusterfs 作为存储,发现 cpu 消耗越来越大,怀疑IO是瓶颈。

验证方法, 去掉存储,做比较实验,发现性能大大提高。

了解到glusterfs 性能远差于Cinder performance,解决方案,换成Cinder 存储。

总结: 对性能影响的关键因素

1> IO

2> DB Lock

3> Networking

4> DB memory

后来,把透明大页也打开了。
————————————————

原文链接:https://blog.csdn.net/vimin_1314/article/details/121884245

相关文章