【问题标题】:How to configure Neo4j to run in a minimal memory environment?如何配置 Neo4j 在最小内存环境中运行?
【发布时间】:2023-03-16 15:46:09
【问题描述】:

出于演示目的,我在低内存环境中运行 Neo4j —— 一台 4GB 内存的笔记本电脑,1644MB 用于视频内存,只有 2452MB 可用。它还运行 SQL Server,我们的 WCF 服务,以及我们的客户.. 所以 Neo4j 的内存很少。

我正在通过 REST 从 C# 服务运行 LOAD CSV 密码脚本。有 20 多个脚本,它们在服务器环境中运行良好。我编写了分页代码,以便它们以较小的批次运行。我已将批处理大小减小到非常低(25 csv 行),并且给定脚本可能会执行 300 个批处理,但在某些时候我仍然会收到“Java 堆空间”错误。

我尝试使用相对较大的堆空间 (640MB) 配置 Neo4j,这是所有可用的 RAM 大小加上将 cache_type 设置为 none,并且在我得到 java 堆空间错误之前它会更进一步。我不明白的是,在那种情况下,为什么它会增长这么多?此外,在我重新启动 neo4j 服务之前,我很快就会收到这些 java 堆空间错误。批量大小似乎不会明显影响使用的内存量。

但是,在这样做之后,我使用这些设置运行应用程序,由于缓存设置,查询性能变得非常缓慢。

我在一台配备 4G RAM 的 Windows 7 笔记本电脑上运行它——使用 Neo4j 2.2.1 社区版。

想法?

【问题讨论】:

    标签: memory neo4j cypher


    【解决方案1】:

    也许您可以共享您的 LOAD CSV 语句和您运行的其他查询。

    我想你只是遇到了这个:

    http://markhneedham.com/blog/2014/10/23/neo4j-cypher-avoiding-the-eager/

    所以PROFILEEXPLAIN 您的查询并使其不使用那么多中间状态。如果您分享您的陈述,我们可以提供帮助。

    你应该使用PERIODIC COMMIT 100

    类似:

    heap=512M
    dbms.pagecache.memory=200M
    keep_logical_logs=false
    cache_type=none
    

    http://console.neo4j.org 在内存中运行 neo4j,在 1 GB 内存中最多可放置 50 个实例。所以应该是可行的。

    【讨论】:

    • 这解决了我眼前的问题......但是。查看为一个相对简单的案例生成的计划,我肯定会发生一些“急切”的事情,并且提取的记录比我应该做的要多。需要了解为什么会这样。但这是一个单独的问题和答案。非常感谢!
    猜你喜欢
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 2019-06-20
    • 2014-02-20
    相关资源
    最近更新 更多