GPDB:Out 段内存

GPDB:Out of memory at segment

我们在尝试通过计划作业执行多个 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 数据库的主机连接的查询是什么?

提前致谢

Do we need to increase the vmprotect limit? if Yes, then by which amount should we increase it?

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

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

  • 查询错误
  • 不良table分布(偏斜)
  • 错误设置(如 gp_vmem_protect_limit)
  • 资源不足 (RAM)

How to handle concurrency at gpdb?

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

How much swap we need to add here when we are already running with 30 GB RAM. currently, we have added 15GB swap here? is that ok ?

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

我建议使用 256GB 或更多的 RAM,尤其是在您担心并发性的情况下。

What is the query to identify host connection with Greenplum database

select * from pg_stat_activity;