【问题标题】:Memory leak behavior in Neo4j community editionNeo4j 社区版中的内存泄漏行为
【发布时间】:2014-07-16 15:06:13
【问题描述】:

我之前在 neo4j 邮件列表 (https://groups.google.com/forum/#!topic/neo4j/zn-7lKHVvNI) 上发帖,但没有收到社区的任何回复,所以我在这里发帖...

我注意到来自 neo4j 社区版的内存泄漏行为。针对 2.1.2(也针对 2.0.3 进行测试)和 512MB 堆运行此测试代码 (https://gist.github.com/mlaldrid/85a03fc022170561b807) 会导致 GC 在数十万次密码查询后流失。最终我要么得到 OutOfMemory 错误,要么码头超时。

但是,当我对 neo4j 企业版的 eval 副本运行相同的测试代码时,它会继续执行 350 万次查询,但没有任何超过 512MB 堆限制的迹象。在那之后我终止了测试,对行为与社区版有很大不同感到满意。

因此,我的问题是:为什么这种内存泄漏行为在社区版和企业版中有所不同?是企业版的“高级缓存”功能解决的吗?这是社区版的已知但不透明的限制吗?

感谢您对此问题的任何见解。

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    这是社区版可用的 4 种缓存类型(弱缓存和软缓存)中的 2 种最近发现的内存泄漏。它不会影响企业,因为企业默认使用“hpc”缓存。

    它仅影响您不太可能从数据库中的现有数据中读取数据或系统上的大部分负载是写入的部署。

    我们已经对此进行了修复,并将在后续版本中发布。目前,如果您的用例不幸触发此问题,您需要在社区中使用“强”缓存或“无”,或者切换到企业版,直到下一个补丁发布。

    【讨论】:

    • 这是在 2.2.0 中修复的吗?我的内存被炸到了 4 个演出,并且 Neo 在 2.2.0 的 10 000 MATCH-es 后卡在 GC 上
    【解决方案2】:

    我正在发布 jvisualvm 采样器的输出

    我想这回答了这个问题,因为泄漏仍然存在于 2.2.0 中

    编辑:

    问题在于使用 ExecutionEngine。我在 GraphDatabaseService 上使用了 execute 方法,它解决了我的问题

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多