Greenplum/Deepgreen ERROR: insufficient memory reserved for statement (memquota.c:228)

本文介绍了解决 Greenplum 数据库中遇到的内存不足错误的方法。通过调整 statement_mem 参数的大小来避免 insufficentmemoryreservedforstatement 错误。

今天生产中遇到了内存不足的错误:insufficient memory reserved for statement (memquota.c:228),这里记录一下问题原因及解决办法。


解决方法:

将statement_mem默认的125MB的配置提高,建议在500MB左右或者更高一些。


操作步骤:

1.查看statement_mem默认设置:

dgadmin@flash:~$ gpconfig -s statement_mem
Values on all segments are consistent
GUC          : statement_mem
Master  value: 125MB
Segment value: 125MB

2.在Master节点修改配置文件postgresql.conf,最后一行添加statement_mem:

chris@flash:~$ su - dgadmin
Password:
dgadmin@flash:~$ cd $MASTER_DATA_DIRECTORY
dgadmin@flash:/dgdata/master/dg-1$ ls
base     gpperfmon          pg_distributedlog     pg_ident.conf  pg_stat_tmp  pg_twophase            pg_xlog              postmaster.opts
global   pg_changetracking  pg_distributedxidmap  pg_log         pg_subtrans  pg_utilitymodedtmredo  postgresql.conf      postmaster.pid
gp_dbid  pg_clog            pg_hba.conf           pg_multixact   pg_tblspc    PG_VERSION             postgresql.conf.bak
dgadmin@flash:/dgdata/master/dg-1$

dgadmin@flash:/dgdata/master/dg-1$ vim postgresql.conf
dgadmin@flash:/dgdata/master/dg-1$ gpstop -u
20170611:10:40:34:003556 gpstop:flash:dgadmin-[INFO]:-Starting gpstop with args: -u
20170611:10:40:34:003556 gpstop:flash:dgadmin-[INFO]:-Gathering information and validating the environment...
20170611:10:40:34:003556 gpstop:flash:dgadmin-[INFO]:-Obtaining Greenplum Master catalog information
20170611:10:40:34:003556 gpstop:flash:dgadmin-[INFO]:-Obtaining Segment details from master...
20170611:10:40:34:003556 gpstop:flash:dgadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 4.3.99.00 build Deepgreen DB'
20170611:10:40:34:003556 gpstop:flash:dgadmin-[INFO]:-Signalling all postmaster processes to reload
................


3.使修改生效:

dgadmin@flash:/dgdata/master/dg-1$ gpconfig -s statement_mem
Values on all segments are consistent
GUC          : statement_mem
Master  value: 500MB
Segment value: 500MB


备注:需要注意的是,新版本的配置文件中,参数gp_resqueue_memory_policy通常会设置为:'eager_free'。如果要对statement_mem进行修改并让其发挥作用,参数应该配置为:

gp_resqueue_memory_policy = 'auto'
java.sql.SQLException: Java heap space at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.28.jar!/:8.0.28] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.28.jar!/:8.0.28] at com.mysql.cj.jdbc.StatementImpl.executeQuery(StatementImpl.java:1201) ~[mysql-connector-java-8.0.28.jar!/:8.0.28] at com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:111) ~[HikariCP-3.4.5.jar!/:?] at com.zaxxer.hikari.pool.HikariProxyStatement.executeQuery(HikariProxyStatement.java) ~[HikariCP-3.4.5.jar!/:?] at org.apache.metamodel.jdbc.JdbcDataContext.execute(JdbcDataContext.java:474) ~[MetaModel-jdbc-5.3.5-2024-SNAPSHOT.jar!/:?] at org.apache.metamodel.jdbc.JdbcDataContext.executeQuery(JdbcDataContext.java:540) ~[MetaModel-jdbc-5.3.5-2024-SNAPSHOT.jar!/:?] at org.apache.metamodel.jdbc.JdbcDataContext.executeQuery(JdbcDataContext.java:527) ~[MetaModel-jdbc-5.3.5-2024-SNAPSHOT.jar!/:?] at org.datacleaner.job.runner.SourceTableRowProcessingPublisher.processRowsInternal(SourceTableRowProcessingPublisher.java:220) ~[DataCleaner-engine-core-5.8.1-20251030-SNAPSHOT.jar!/:?] at org.datacleaner.job.runner.AbstractRowProcessingPublisher.processRows(AbstractRowProcessingPublisher.java:208) ~[DataCleaner-engine-core-5.8.1-20251030-SNAPSHOT.jar!/:?] at org.datacleaner.job.tasks.RunRowProcessingPublisherTask.execute(RunRowProcessingPublisherTask.java:43) ~[DataCleaner-engine-core-5.8.1-20251030-SNAPSHOT.jar!/:?] at org.datacleaner.job.concurrent.TaskRunnable.run(TaskRunnable.java:61) ~[DataCleaner-api-5.8.1-20251030-SNAPSHOT.jar!/:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_342] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_342] at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_342] Caused by: java.lang.OutOfMemoryError: Java heap space
最新发布
11-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值