Neo4j (Windows) - 无法增加 Neo4jImport 工具的堆内存大小
Neo4j (Windows) - can't increase heap memory size for Neo4jImport tool
我尝试批量导入一个包含大约 4000 万个节点和 2000 万个关系的图形数据库,但出现内存不足错误(我知道,这已经记录在案)。在 Windows,我是这样使用导入工具的:
neo4jImport –into SemMedDB.graphdb --nodes nodes1.csv --nodes nodes2.csv --relationships edges.csv
我有 16 GB 的 RAM,但 Neo4j 只分配了 3.5 GB 的最大堆内存,而我还有大约 11 GB 的空闲 RAM。为了尝试解决此问题,以免出现内存不足错误,我在网上关注了一些 suggestions 并在我的 C:\program files\Neo4j 文件夹中创建了一个 conf 文件夹,并创建了一个 neo4j-wrapper.conf 堆值设置为的文件:
wrapper.java.initmemory=10000
wrapper.java.maxmemory=10000
此外,我将我的 neo4j 属性文件页面缓存设置设置为:
dbms.pagecache.memory=5g
问题是,当我重新启动我的 neo4j 应用程序并尝试再次导入时,它仍然显示 3.5 GB 的最大堆 space 和 11 GB 可用内存...为什么 Neo4j 无法识别我的设置?
请注意,我已尝试下载 Neo4j 的 zip 版本以使用导入工具的 powershell 版本,但我 运行 遇到了更改配置设置的相同问题,但 Neo4j 无法识别它们。
非常感谢您对此提供帮助...谢谢!
无法判断 windows,但 linux neo4j-wrapper.conf
不用于 neo4j-import
工具。相反,您可以使用 JAVA_OPTS
环境变量传递额外的 JVM 参数(此处再次使用 Linux 语法):
JAVA_OPTS="-Xmx10G" bin/neo4j-import
要验证该方法,请将 -XX:+PrintCommandLineFlags
修改为上述内容。在输出的开头,您应该看到类似于
的一行
-XX:InitialHeapSize=255912576 -XX:MaxHeapSize=4094601216 \n
-XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers \n
-XX:+UseCompressedOops -XX:+UseParallelGC
如果那个出现,使用 JAVA_OPTS
是可行的方法。
我找到了解决办法。最终允许我更改 Neo4jImport 工具的堆大小的是在文本编辑器中打开 neo4jImport.bat 文件(路径为 C:Program files\neo4j\bin)(要求我先更改权限)和将 "set EXTRA_JVM_ARGUMENTS=-Dfile.encoding=UTF-8" 行更改为
set EXTRA_JVM_ARGUMENTS=-Dfile.encoding=UTF-8 -Xmx10G -Xms10G -Xmn2G
现在,当我 运行 Neo4jImport 到 neo4j shell 时,它显示堆大小为 9.75 GB。
通常 Neo4jImport 不应该依赖于大堆,它会使用任何可用的堆,然后使用任何可用的堆外,但是机器需要一定数量的 "boilerplate" 内存才能工作适当地。最近有一个修复程序(在 2.3.3 中出现)减少了导入工具的堆使用,这肯定对这里有所帮助。
我尝试批量导入一个包含大约 4000 万个节点和 2000 万个关系的图形数据库,但出现内存不足错误(我知道,这已经记录在案)。在 Windows,我是这样使用导入工具的:
neo4jImport –into SemMedDB.graphdb --nodes nodes1.csv --nodes nodes2.csv --relationships edges.csv
我有 16 GB 的 RAM,但 Neo4j 只分配了 3.5 GB 的最大堆内存,而我还有大约 11 GB 的空闲 RAM。为了尝试解决此问题,以免出现内存不足错误,我在网上关注了一些 suggestions 并在我的 C:\program files\Neo4j 文件夹中创建了一个 conf 文件夹,并创建了一个 neo4j-wrapper.conf 堆值设置为的文件:
wrapper.java.initmemory=10000
wrapper.java.maxmemory=10000
此外,我将我的 neo4j 属性文件页面缓存设置设置为:
dbms.pagecache.memory=5g
问题是,当我重新启动我的 neo4j 应用程序并尝试再次导入时,它仍然显示 3.5 GB 的最大堆 space 和 11 GB 可用内存...为什么 Neo4j 无法识别我的设置?
请注意,我已尝试下载 Neo4j 的 zip 版本以使用导入工具的 powershell 版本,但我 运行 遇到了更改配置设置的相同问题,但 Neo4j 无法识别它们。
非常感谢您对此提供帮助...谢谢!
无法判断 windows,但 linux neo4j-wrapper.conf
不用于 neo4j-import
工具。相反,您可以使用 JAVA_OPTS
环境变量传递额外的 JVM 参数(此处再次使用 Linux 语法):
JAVA_OPTS="-Xmx10G" bin/neo4j-import
要验证该方法,请将 -XX:+PrintCommandLineFlags
修改为上述内容。在输出的开头,您应该看到类似于
-XX:InitialHeapSize=255912576 -XX:MaxHeapSize=4094601216 \n
-XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers \n
-XX:+UseCompressedOops -XX:+UseParallelGC
如果那个出现,使用 JAVA_OPTS
是可行的方法。
我找到了解决办法。最终允许我更改 Neo4jImport 工具的堆大小的是在文本编辑器中打开 neo4jImport.bat 文件(路径为 C:Program files\neo4j\bin)(要求我先更改权限)和将 "set EXTRA_JVM_ARGUMENTS=-Dfile.encoding=UTF-8" 行更改为
set EXTRA_JVM_ARGUMENTS=-Dfile.encoding=UTF-8 -Xmx10G -Xms10G -Xmn2G
现在,当我 运行 Neo4jImport 到 neo4j shell 时,它显示堆大小为 9.75 GB。
通常 Neo4jImport 不应该依赖于大堆,它会使用任何可用的堆,然后使用任何可用的堆外,但是机器需要一定数量的 "boilerplate" 内存才能工作适当地。最近有一个修复程序(在 2.3.3 中出现)减少了导入工具的堆使用,这肯定对这里有所帮助。