gpt4 book ai didi

java - 为 neo4j-admin 导入设置堆内存

转载 作者:行者123 更新时间:2023-12-01 21:33:42 24 4
gpt4 key购买 nike

我正在使用 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 上设置堆大小,如下所示:

导出 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 7 Neo4j CE 3.4.11 Java 1.8.0_131

最佳答案

该问题已通过增加最大堆内存得到解决。问题是我没有正确设置堆内存分配。

事实证明有一个简单的解决方案;这只是我何时尝试设置堆内存的问题。最初,我在命令行尝试了命令 export JAVA_OPTS='-server -Xms300g -Xmx300g',然后运行我的 bash 脚本来调用 neo4j-admin import 。这不起作用,neo4j-admin import 继续使用相同的堆空间配置。

解决方案是简单地在名为 neo4j-admin import 的 shell 脚本中包含用于设置堆内存的命令。我的 shell 脚本最终看起来像这样:

#!/bin/bash

export JAVA_OPTS='-server -Xms300g -Xmx300g'

/usr/local/neo4j-community-3.4.11/bin/neo4j-admin import \
--ignore-missing-nodes=true \
--database=mag_cs2.graphdb \
--multiline-fields=true \
--high-io=true \

这看起来非常明显,但我花了将近一周的时间才意识到我需要改变什么。希望这可以避免其他人同样的头痛。

关于java - 为 neo4j-admin 导入设置堆内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58808877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com