赞
踩
避免内存错误和GPDB资源问题
内存管理对GPDB集群具有重要的性能影响。大多数环境推荐使用默认设置。不要去改变默认设置,除非你真的理解了自己系统的需求。
内存不足错误绘制出遇到内存不足错误的GPDB的段数据库,节点,进程信息
例如:
Out of memeory ( seg27 host. example.com pid = 47093 )
VM Protecte failed to allocate 4096 bytes , 0MB available
通常情况下GPDB内存溢出的情况可以归因于以下情况:
解决GPDB内存溢出的情况,可以是用如下方法
(vmprotect * 0.9) / max_expected_concurrent_queries
集群所含有物理内存为: 256GB
交换空间 SWAP : 64GB
一共有4个节点,其中每一个节点有 8个段数据库,8个镜像段数据库;
每个主节点最多允许失败的节点数是11
gp_vmem = ( (SWAP + RAM) - (7.5GB + 0.05 * RAM ) ) / 1.7
- = ( (64 + 256) - (7.5 + 0.05*256) ) / 1.7
- = 176
vm.overcommit_ratio = ( RAM - (0.026 * gp_vmeme) )/RAM
- = (256 - (0.026 * 176)) / 256
- = 0.982
所以设置 vm.overcommit_ratio = 98
计算
- gp_vmem_protect_limit = gp_vmem / maximum_acting_primary_segments
- = 176 / 11
- = 16 GB
- = 16384 MB
GPDB 资源队列为管理整个集群的负载提供非常有力的机制。资源队列可以限制在队列中查询的数量和查询语句内存的使用量。当一个查询提交给GPDB集群,它就会被追加到资源队列中。这决定了这个查询是否被资源队列接收并确定是否有足够的资源用于查询的执行。
将所有用户和管理员定义的资源队列关联,每一个登录的用户都有自己的资源队列;这个用户提交的任何查询都将会和管理员提供的资源队列关联起来。如果没有显示的分配队列,则用户的查询将会转换为默认队列。
不要使用 gpadmin 用户或者其他超级用户角色去运行查询。因为超级用户并不受资源队列的限制,超级用户运行在其指定的资源队列上,并且不受之前设定的参数限制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。