neo4j 全量数据导入OOM问题解决
在neo4j中有一个专门针对导入的命令neo4j-import(后期可能会删除,但是本文使用的neo4j版本较低,社区版3.4.5)
可以用neo4j-admin命令代替:neo4j-admin import
于是,当全量导入数据时,尤其是数据中存在着大量的无法关联的节点和无效的关系时,会导致jvm占用激增,然后导入速度变缓慢,jvm在持续的做full GC,一段时间后(可能比较长),就会报OOM错误
./neo4j-admin import \
--nodes:xx ../import/xx_header.csv,../import/xx.csv \
--relationships:yy ../import/yy_header.csv,../import/yy.csv \
.....
--high-io \
--ignore-missing-nodes=true \
--ignore-extra-columns=true \
即时添加参数max-memory也无法解决jvm的OOM
--high-io \
--max-memory=20G \
--ignore-missing-nodes=true \
只有设置jvm的大小,才能避免OOM
默认的jvm大小是6G多(不知道是不是我们服务器的问题,又或者是默认的)
设置jvm的堆大小,可通过变量JAVA_OPTS设定,才能真正的调整jvm的堆大小,避免OOM
#!/bin/bash
export JAVA_OPTS='-server -Xms8g -Xmx15g'
sh /home/neo4j/neo4j/bin/neo4j-admin import \
--nodes:xx ../import/xx_header.csv,../import/xx.csv \
--relationships:yy ../import/yy_header.csv,../import/yy.csv \
.....
--high-io \
--max-memory=30G \
--ignore-missing-nodes=true \
--ignore-extra-columns=true \