【问题标题】:Query failing with "ERROR: Canceling query because of high VMEM usage"查询失败并显示“错误:由于 VMEM 使用率高而取消查询”
【发布时间】:2017-09-05 20:00:23
【问题描述】:

我们有少量的 gpdb 集群。在这方面,很少有查询失败

系统相关信息

TOTAL RAM =30G
SWAP =15G
gp_vmem_protect_limit= 2700MB
TOTAL segment = 8 Primary + 8 mirror = 16
SEGMENT HOST=2 
VM_OVERCOMMIT RATIO =72
Used this calc : http://greenplum.org/calc/#

症状

查询失败,错误信息如下:

ERROR: XX000: Canceling query because of high VMEM usage. Used: 2433MB, available 266MB, red zone: 2430MB (runaway_cleaner.c:135)  (seg2 slice74 DATANODE01:40002 pid=11294) (cdbdisp.c:1320)

我们试过了:

更改了以下参数 statement_mem 从 125 MB 到 8GB MAX_STATEMENT 内存从 200 MB 到 16 GB

不确定这里究竟需要更改什么。仍然,试图了解错误的根本原因。

任何帮助将不胜感激?

【问题讨论】:

    标签: greenplum hawq


    【解决方案1】:

    gp_vmem_protect_limit 适用于每个段。你有 16 段。根据您的段和 vm_protect,您需要 2700MB X 16 总内存。

    【讨论】:

    • 谢谢,我们必须将可用的 vm 总内存 = 45 GB。在这种情况下,vmprotect limit 1400 应该是多少?
    • 2 段主机服务器上的 16 段。
    • overcommit ratio 设置为 75,我不认为你有 45GB vmem。 30*0.75 + 15 ~= 37.5G。您需要为操作系统预留内存。假设您为 GPDB 保留 32G,那么 32/16=2GB。将虚拟机保护设置为 2048MB。请注意,GPDB 不喜欢内存过度使用。你有 30G 物理内存,但你当前有 37.5G vmem 地址。此外,根据您的 cpu 核心分配段数。你也不希望 gpdb 过度使用 cpu。
    • 这个错误是由 runaway_detector 触发的。您可以禁用 runaway_detector 或避免以“gpadmin”身份运行查询。
    • 感谢您的好主意。我要检查环境。
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2020-01-18
    • 2020-08-19
    相关资源
    最近更新 更多