【发布时间】:2019-11-11 21:22:58
【问题描述】:
我正在尝试使用neo4j-admin import 工具从 csv 加载数据来加载数亿个节点的图表。导入将运行大约两个小时,但随后崩溃并出现以下错误:
Exception in thread "Thread-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.lang.String.substring(String.java:1969)
at java.util.Formatter.parse(Formatter.java:2557)
at java.util.Formatter.format(Formatter.java:2501)
at java.util.Formatter.format(Formatter.java:2455)
at java.lang.String.format(String.java:2940)
at org.neo4j.unsafe.impl.batchimport.input.BadCollector$RelationshipsProblemReporter.getReportMessage(BadCollector.java:209)
at org.neo4j.unsafe.impl.batchimport.input.BadCollector$RelationshipsProblemReporter.message(BadCollector.java:195)
at org.neo4j.unsafe.impl.batchimport.input.BadCollector.processEvent(BadCollector.java:93)
at org.neo4j.unsafe.impl.batchimport.input.BadCollector$$Lambda$110/603650290.accept(Unknown Source)
at org.neo4j.concurrent.AsyncEvents.process(AsyncEvents.java:137)
at org.neo4j.concurrent.AsyncEvents.run(AsyncEvents.java:111)
at java.lang.Thread.run(Thread.java:748)
我一直在尝试以几种不同的方式调整我的最大和初始堆大小设置。首先,我尝试简单地创建一个HEAP_SIZE= 变量,然后按照here 的描述运行命令以加载数据,然后我尝试在JVM 上设置堆大小,如下所示:
export JAVA_OPTS=%JAVA_OPTS% -Xms100g -Xmx100g
但无论我在导入开始时使用什么设置,我都会得到相同的报告:
Available resources:
Total machine memory: 1.48 TB
Free machine memory: 95.00 GB
Max heap memory : 26.67 GB
Processors: 48
Configured max memory: 1.30 TB
High-IO: true
如您所见,我在应该有大量可用资源的大型服务器上构建它。我假设我没有为 Neo4j 正确设置 JVM 参数,但我在网上找不到任何东西来告诉我正确的方法。
什么可能导致我的 GC 内存错误,我该如何解决?这是我可以通过在 JVM 上投入更多资源来解决的问题吗?如果可以,我该怎么做才能让 neo4j-admin 导入工具使用它?
RHEL 7Neo4j CE 3.4.11Java 1.8.0_131
【问题讨论】:
-
HEAP_SIZE 环境变量应该是要走的路,你能在你尝试设置的时候添加那个 sn-p 吗?