Neo4j 如何处理由于堆大小错误而丢失到服务器的连接?

Neo4j 如何处理由于堆大小错误而丢失到服务器的连接?,neo4j,neo4j-python-driver,Neo4j,Neo4j Python Driver,我有一个包含2200万条JSON格式记录的大型数据集,我使用apoc.periodic.iterate和apoc.mongodb将其从mongodb数据库导入neo4j。导入300万条记录并占用6g内存后,与服务器的连接丢失,出现堆大小异常。我更改了配置文件并设置了堆和页缓存,但这没有生效,这是主要问题。顺便说一下,在浏览器中运行代码和使用python驱动程序运行代码的结果是相同的。 虽然当我手动导入数据并以250万个限制导入数据,然后在下一次查询执行中跳过该限制并导入下一个250万个批次时,它

我有一个包含2200万条JSON格式记录的大型数据集,我使用apoc.periodic.iterate和apoc.mongodb将其从mongodb数据库导入neo4j。导入300万条记录并占用6g内存后,与服务器的连接丢失,出现堆大小异常。我更改了配置文件并设置了堆和页缓存,但这没有生效,这是主要问题。顺便说一下,在浏览器中运行代码和使用python驱动程序运行代码的结果是相同的。 虽然当我手动导入数据并以250万个限制导入数据,然后在下一次查询执行中跳过该限制并导入下一个250万个批次时,它仍然有效。我实际上想用python驱动程序来实现这一点,但我无法模拟手动处理它的方式

日志文件中有一个错误,显示:协议握手期间发生致命错误。。。
已建立的连接被主机中的软件中止…

对于第一部分,请发送您的配置。 对于pyhton驱动程序simple,您可以将cypher与映射参数列表一起使用:

from neo4j import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j",    "password"))

def add_friend(tx, name, friend_name):
    tx.run("MERGE (a:Person {name: $name}) "
           "MERGE (a)-[:KNOWS]->(friend:Person {name: $friend_name})", name=name, friend_name=friend_name)


def add_friend_list(tx, friend_list):
    tx.run("UNWIND $friend_list AS friend"
           "MERGE (a:Person {name: friend.name}) "
           "MERGE (a)-[:KNOWS]->(friend:Person {name: friend.friend_name})", friend_list)

def fetch_data_from_db():
     ...

with driver.session() as session:
    friends_list = fetch_data_from_db()
    for friend in friend_list:
        session.write_transaction(add_friend,                     friend["name"],friend["friend_name"])
    session.write_transaction(add_friend_list, friends_list)

尝试将整个任务分页为小块任务。如果你一次加载这么大的数据,它肯定会崩溃。相反,您可以在分页模式下加载数据,或者在小批量插入中写入数据。正如我所说,我不想立即加载此数据,当然我使用了批量导入机制。或者您可以传递一个列表,然后使用“展开”对其进行迭代