neo4j广度优先遍历内存问题

neo4j breadth first traversal memory issue

我有一个包含百万个节点和 300 万个边的图形加载到 Neo4j 中。它在对其进行广度优先遍历时崩溃,抱怨 8 GB 机器上的内存不足。每个节点标签字符串的平均长度为 40 个字符。

Neo4j 使用什么样的内部表示需要如此多的内存,尤其是。为了遍历?鉴于 Neo4j 能够表示整个图,为什么它在尝试维护广度优先遍历所需的访问节点集时会失败。

根据我的理解,上图的邻接表格式的图形表示应该以 MB 为单位。 计算假设节点和边的 64 位表示

您可能有 8 GB 可用空间,但您是否正在配置 Neo4j 以允许它使用 space?你能看到它在工作时占用了多少空间吗?

这里有一些资源:

http://neo4j.com/developer/guide-performance-tuning/

http://neo4j.com/docs/stable/server-performance.html

http://neo4j.com/docs/stable/configuration-settings.html#config_neostore.nodestore.db.mapped_memory

http://neo4j.com/developer/guide-sizing-and-hardware-calculator/

宾果游戏@brian-underwood!你是对的。

我没有将 Neo4J 配置为使用更多内存。

由于问题仅与节点有关,以下是我修改的内容

  • neostore.nodestore.db.mapped_memory=256M #增加
  • neostore.relationshipstore.db.mapped_memory=3G #不变
  • neostore.propertystore.db.mapped_memory=256M #增加
  • neostore.propertystore.db.strings.mapped_memory=200M #不变
  • neostore.propertystore.db.arrays.mapped_memory=200M #不变

也已启用,自动索引节点及其键

  • node_auto_indexing=真
  • node_keys_indexable=key_name