我们在尝试通过预定作业执行多个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错误。
我们是否需要增加vmprotect限制?如果是,那么我们应该增加多少呢?
如何在gpdb处理并发?
当我们已经运行30 GB RAM时,我们需要添加多少交换。 目前,我们在这里增加了15GB交换?那可以吗?
提前致谢
答案 0 :(得分:0)
我们是否需要增加vmprotect限制?如果是,那么我们应该增加多少呢?
在Greenplum.org上设置gp_vmem_protect_limit有一个很好的计算器。设置取决于您拥有的每个主机的内存,交换和段数 http://greenplum.org/calc/
由于多种原因,您可能会收到OOM错误。
如何在gpdb处理并发?
更多RAM,每个主机更少的段和工作负载管理,以限制运行的并发查询数。
当我们已经运行30 GB RAM时,我们需要添加多少交换。目前,我们在这里增加了15GB交换?那可以吗?
只有30GB的内存?这很小。您可以添加更多交换,但与实际RAM相比,它会减慢查询速度。我不会使用超过8GB的交换量。
我建议使用256GB或更多内存,特别是如果你担心并发。
使用Greenplum数据库识别主机连接的查询是什么
select * from pg_stat_activity;