参考官网https://greenplum.org/calc/# 内存计算器
参数说明:
gp_vmem_protect_limit:控制了每个segment数据库为所有运行的查询分配的内存总量。如果查询需要的内存超过此值,则会失败。
vm.overcommit_ratio:只有当vm.overcommit_memory = 2的时候才会生效,内存可申请内存为
SWAP内存大小 + 物理内存 * overcommit_ratio/100
vm.overcommit_memory:
0: 默认设置。当应用进程尝试申请内存时,内核会做一个检测。内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1.:对于内存的申请请求,内核不会做任何check,直到物理内存用完,触发OOM杀用户态进程。
2: 当 请求申请的内存 >= SWAP内存大小 + 物理内存 * N,则拒绝此次内存申请。
修改方式:
有两种方式修改Greenplum参数:
1.gpconfig -c [参数] -v [Segment] [-m] [Master] ,如:gpconfig -c gp_vmem_protect_limit -v 18000
2. 编辑$MASTER_DATA_DIRECTORY/postgresql.conf文件
有三种方式修改内核参数,但要有root权限:
1.编辑/etc/sysctl.conf ,改vm.overcommit_memory=2,然后sysctl -p 使配置文件生效
2.sysctl vm.overcommit_memory=2
3.echo 2 > /proc/sys/vm/overcommit_memory