【问题标题】:Neo4J java driver - Out of memory with correct queryNeo4J java 驱动程序 - 正确查询时内存不足
【发布时间】:2018-04-27 16:01:56
【问题描述】:

我目前遇到一个 Neo4J 问题,我真的不知道在哪里寻找答案,因为我在低级别调用 java 驱动程序并且一切似乎都已检查。

情况:

  • 在 docker (3.3) 中运行 Neo4J,给了它 14G 的内存
  • 使用 java 8
  • 它与 OGM 配合得很好,可以处理大量数据和大量查询
  • 通过 java、neo4j-ogm-core 3.1.0、neo4j-java-driver 1.5.2 与它对话

现在,出于性能原因,我正在重组我的项目以使用低级 java 驱动程序而不是 OGM 驱动程序。如下查询可以正常运行:

MATCH (s:Sentence)<-[:SENTENCE_OF]-(:Paragraph)<-[:CONTAINS]-(d:Document) WHERE id(d) = {docid} RETURN s.sentence as t
parameters = {docid=2681031}

其中一个查询挂起:

MATCH  (w0:Word) , (w0:Word)<-[:CONTAINS_WORD]-(:Sentence)-[:SENTENCE_OF]-(:Paragraph)<-[:CONTAINS]-(d:Document)  WHERE w0.originalTextLower = {wT0} AND  id(d) = {docid}  RETURN w0
parameters = {wT0=abo, docid=2681032}

如果我通过 Web 界面运行相同的查询,查询执行良好并且不返回任何结果。如果我通过 java 驱动程序运行它,它会将 cpu 使用率提升到 100% 并自行运行:

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 875036672 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /hs_err_pid378.log
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x000000063b400000, 875036672, 0) failed; error='Cannot allocate memory' (errno=12)

我通过org.neo4j.driver.v1.Session对象调用这个语句,如下:

session.run(statementTemplate, parameters);

我已经很感激关于在哪里进一步研究的提示。查询似乎很好,我正在运行最新的软件和驱动程序,...唯一我无法检查的是驱动程序本身在水下做什么。

【问题讨论】:

  • 您是否为:Word(originalTextLower) 创建了索引?
  • 是的,无论如何,通过 Web 界面执行的相同查询在几毫秒内执行。
  • 取得了一些进展:我通过以下调用创建了 Bolt 会话:GraphDatabase.driver("bolt://" + hostname + ":7687", AuthTokens.basic(username, password));我在 OP 中显示的查询是第 6 个(前 5 个执行良好)。对于每个查询,我从驱动程序对象请求一个会话:driver.getSession()。但是,如果我重新创建 Driver 对象,则查询会成功(这会为每个查询启动一个新的连接池)。如果我只使用从同一个 Driver 对象请求的会话,它就会崩溃。

标签: java neo4j out-of-memory driver


【解决方案1】:

解决了问题:neo4j-java-driver 不处理嵌套查询。我有一个循环遍历 1 个查询的结果。在那个循环中,它使用相同的 Session 对象来执行另一个查询。在这种情况下,OGM 不会抱怨,但 neo4j-java-driver 会抱怨。

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    相关资源
    最近更新 更多