首页 > 解决方案 > 使用 Geonetwork 元数据完整视图时出现 JAVA 堆空间错误

问题描述

我在 CENTOS 7 机器上使用 Geonetwork 3.10 和 APACHE Tomcat。这些是各种组件的特性:

我的目录应该管理大约 35000 个文件的元数据的起始数量,并且这个数量会增加。不幸的是,当我尝试查看完整的元数据视图时,我遇到了以下错误:

加载元数据视图时出错

使用 journalctl -f 命令查看日志,它对应于以下错误:

DEBUG [org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver] - Resolving exception from handler [public void org.fao.geonet.api.records.formatters.FormatterApi.getRecordFormattedBy(java.lang.String,java.lang.String,java.lang.String,org.fao.geonet.api.records.formatters.FormatterWidth,java.lang.String,java.lang.String,org.fao.geonet.api.records.formatters.FormatType,boolean,org.springframework.web.context.request.NativeWebRequest,javax.servlet.http.HttpServletRequest) throws java.lang.Exception]: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space

另一个与 Java 堆空间相关的错误如下:

严重:后台线程容器意外死亡 containerBackgroundProcessor[StandardEngine[Catalina]] java.lang.OutOfMemoryError: Java heap space

看起来在看

/var/log/tomcat/catalina.2020-01-24.log

我正在使用 Postgres 数据库,并将其设置在

geonetwork/WEB-INF/config-node/srv.xml

文件取消注释该行

<import resource="../config-db/postgres-postgis.xml"/>

我已将文件/usr/share/tomcat/bin/setenv.sh/etc/tomcat/tomcat.conf分别设置为以下值

export CATALINA_OPTS="-Dfile.encoding=UTF-8 -Xms3072m -Xmx3072m -XX:PermSize=530m -XX:MaxPermSize=3072m"
JAVA_OPTS="-Xms4096m -Xmx4g -Xss2M -XX:+UseG1GC"

java堆空间错误也出现在收割过程中

获取本地文件时出错:Java 堆空间。

我用来在日志中找到的另一个错误如下

*DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - Could not set JDBC Connection read-only
org.postgresql.util.PSQLException: Cannot change transaction read-only property in the middle of a transaction.

我在文件中正确设置了凭据geonetwork/WEB-INF/config-db/jdbc.properties

但即使我检查了我拥有的 .jdbc.properties,它总是会导致只读连接

jdbc.basic.defaultReadOnly=false

请告诉我我做错了什么?还有其他我没有做的微调吗?

标签: javapostgresqltomcatjdbcgeonetwork

解决方案


推荐阅读