簡體   English   中英

Neo4j流導入內存錯誤

[英]Neo4j streaming import memory error

我試圖將流導入neo4j,並且遇到以下跟蹤,導致內存不足錯誤(以及隨后的崩潰):

2016-06-05 03:51:35.218 + 0000信息[onkitlpLogPruningImpl]日志輪換[5]:開始修剪日志。 2016-06-05 03:51:35.218 + 0000信息[onkitlpLogPruningImpl]日志輪換[5]:日志修剪已完成。 2016-06-05 03:53:58.140 + 0000 INFO [onkiaisOnlineIndexSamplingJob]采樣的索引:平均大小為415290的樣本中具有415290唯一值的Node(NodeId),取自包含415290條目的索引2016-06-05 03:56:37.803+ 0000 INFO [onkitlcCheckPointerImpl]由調度程序觸發的時間點閾值[1573526]:正在啟動檢查點... 2016-06-05 03:56:37.811 + 0000 INFO [onkitlcCheckPointerImpl]調度程序觸發的時間點閾值[1573526] :開始存儲刷新... 2016-06-05 03:56:38.019 + 0000信息[onkiscCountsTracker]即將將事務1573543上的計數存儲旋轉到[/mnt/graph/neo4j/data/databases/graph.db/neostore。 counts.db.a],來自[/mnt/graph/neo4j/data/databases/graph.db/neostore.counts.db.b]。 2016-06-05 03:56:38.020 + 0000信息[onkiscCountsTracker]成功將事務1573543上的計數存儲旋轉到[/mnt/graph/neo4j/data/databases/graph.db/neostore.counts.db.a], [/mnt/graph/neo4j/data/databases/graph.db/neostore.counts.db.b]。 2016-06-05 03:56:38.982 + 0000 INFO [onkitlcCheckPointerImpl]由調度程序觸發的針對時間閾值的檢查點[1573526]:存儲刷新已完成2016-06-05 03:56:38.982 + 0000 INFO [onkitlcCheckPointerImpl]觸發了檢查點通過調度程序獲取時間閾值[1573526]:開始將檢查點條目附加到tx日志中... 2016-06-05 03:56:38.987 + 0000信息[onkitlcCheckPointerImpl]由調度程序觸發的時間閾值[1573526]的檢查指向:追加檢查點輸入到tx日志中已完成2016-06-05 03:56:38.987 + 0000信息[onkitlcCheckPointerImpl]由調度程序觸發的檢查點的時間閾值[1573526]:檢查點已完成2016-06-05 03:56:38.987+ 0000 INFO [onkitlpLogPruningImpl]日志輪換[5]:開始清理日志。 2016-06-05 03:56:38.993 + 0000信息[onkitlpLogPruningImpl]日志輪換[5]:日志修剪已完成。 2016-06-05 03:59:50.436 + 0000警告[onkicMonitorGc] GC監視器:應用程序線程被阻止了1123ms。

我無法找到導致此內存錯誤的原因。 有人可以幫我嗎?

編輯:這是我所做的:

driver = GraphDatabase.driver("bolt://localhost", auth=basic_auth("__", "__"))
session = driver.session()

with open("__.txt", "rb") as csvfile:
    reader = csv.reader(csvfile, delimiter='\t')
    count = 0
    for row in reader:
        count = count + 1
        tx = session.begin_transaction()
        statement = "MERGE (a:Node {NodeId:" + row[0].strip() + " })"
        statement += " MERGE (b:Node {NodeId:" + row[1].strip() + " })"
        statement += " MERGE (a)-[:Connection]-(b)"
        tx.run(statement)
        tx.commit()

session.close()
  1. 使用參數而不是字符串替換
  2. 您確定對`:Node(NodeId)``有索引或約束嗎
  3. 您應該在一個事務中包裝多個語句(比如說1000到50k)
  4. 或根本不需要使用交易

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM