GPDB:段内存不足

时间:2017-11-07 07:14:54

标签: linux greenplum hawq

我们在尝试通过预定作业执行多个SQL查询会话时遇到OOM错误。

详细错误:

The error message is: org.postgresql.util.PSQLException:ERROR: Out of memory (seg6 slice5 sungpmsh0:40002 pid=13610)
Detail: VM protect failed to allocate 65584 bytes from system, VM Protect 5835 MB available

我们尝试了

阅读关键支持文档后,我们正在进行基本的故障排除 这里验证了两个内存参数

current setting in GPdb
GPDB vmprotect limit :8 GB
GPB statemen_mem: based on the vmprotect limit.as per reading it is responsible for running the query in the segment.

测试2是否调整了SQL查询。另外,我应该在这里调整一下,请指导?

基于来源

https://discuss.pivotal.io/hc/en-us/articles/201947018-Pivotal-Greenplum-GPDB-Memory-Configuration https://discuss.pivotal.io/hc/en-us/articles/204268778-What-are-VM-Protect-failed-to-allocate-d-bytes-d-MB-available-error-

但仍然得到相同的OOM错误。

  1. 我们是否需要增加vmprotect限制?如果是,那么我们应该增加多少呢?

  2. 如何在gpdb处理并发?

  3. 当我们已经运行30 GB RAM时,我们需要添加多少交换。 目前,我们在这里增加了15GB交换?那可以吗?

  4. 使用Greenplum数据库识别主机连接的查询是什么?
  5. 提前致谢

1 个答案:

答案 0 :(得分:0)

  

我们是否需要增加vmprotect限制?如果是,那么我们应该增加多少呢?

在Greenplum.org上设置gp_vmem_protect_limit有一个很好的计算器。设置取决于您拥有的每个主机的内存,交换和段数 http://greenplum.org/calc/

由于多种原因,您可能会收到OOM错误。

  • 查询错误
  • 错误的表格分布(倾斜)
  • 错误的设置(例如gp_vmem_protect_limit)
  • 资源不足(RAM)
  

如何在gpdb处理并发?

更多RAM,每个主机更少的段和工作负载管理,以限制运行的并发查询数。

  

当我们已经运行30 GB RAM时,我们需要添加多少交换。目前,我们在这里增加了15GB交换?那可以吗?

只有30GB的内存?这很小。您可以添加更多交换,但与实际RAM相比,它会减慢查询速度。我不会使用超过8GB的交换量。

我建议使用256GB或更多内存,特别是如果你担心并发。

  

使用Greenplum数据库识别主机连接的查询是什么

select * from pg_stat_activity;