摘要:南大通用GBase 8c数据库是一款具有多模多态特性的高性能企业级分布式数据库,支持行存、列存、内存等多种存储模式以及单机、主备、分布式部署形态。GBase 8c数据库安装包从南大通用官网获取。
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
南大通用GBase 8c数据库是一款具有多模多态特性的高性能企业级分布式数据库,支持行存、列存、内存等多种存储模式以及单机、主备、分布式部署形态。GBase 8c数据库安装包从南大通用官网获取。
本文将对GBase 8c分布式场景下安装和运行过程中常见的内存问题分析并提供相应的处理方法,以期为使用GBase 8c的用户提供参考。
问题场景:
用户现场在上线前期,进行压力测试,发现连接数不足,调整 dn max_connetions = 50000 连接数后重启集群,dn节点报错起不来。
报错截图:
问题分析:
根据报错内容,gtm proxy:GLOBAL_ALL_PROCS too large,意为max_connections 超过了 宏定义 GLOBAL_ALL_PROCS 的值,此参数的值为32766。
此参数的公式:max_connections+max_prepared_transactions*(num_internal_locks_partitions中TWOPHASE_PART) + 系统辅助线程+系统后台线程 ≤ GLOBAL_ALL_PROCS 。
当上面的公式满足时,才可以启动成功。
问题处理:
修改 max_connections =10000,再次尝试启动数据库集群问题解决。
问题延伸:
实际场景中,可能会出现dn连接数超过限制(这种情况为设计不合理,实际环境中活跃连接数即并发没有这么大),即连接数不够用的情况,此时需要根据实际情况,进行处理:
1.对业务的连接池进行优化,减少idle(空闲链接),释放出资源。
2.优化慢sql,提供连接池的使用率。
3.业务上层,使用F5(硬负载)、haproxy(软负载)、jdbc loadbalance 对业务连接数进行管理,减少连接数的使用。
注意点:
每个节点(cn,dn,gtm节点都涉及)都不能超过此限制,即最大为32766。
知识点科普:
Coordinator 节点在接受到应用端对数据库的访问,在coordinator中会使用GTM client library 来与GTM 沟通获得事务的GXID和事务的SNAPSHOT, 并报告事务运行的状态.
而GTM 则通过自身提供的端口来接受连接,每一个coordinator 和 datanode 的通讯,当接受一个连接,产生一个GTM THREAD 线程去handle GTM于 datanode 和 coordinator之间的通讯. 在通讯的过程中线程始终在CN 和 DN 之间建立事务snapshot,以及发送事务GXID,只有事务完成后,这个线程才退出服务.
实际上GTM 并不直接与coordinator通用,而是通过GTM proxy来进行更有效的通讯.一般来说一个GTM proxy 可以负责上百个 coordinator 的请求.
GTM proxy 通过对coordinator所有的请求扫描的方式,将多个请求进行分组发送给GTM,减少coordinator 与GTM 之间的交互频率.
来源:小安说科技