如何在最小内存环境下将 Neo4j 配置为 运行?

How to configure Neo4j to run in a minimal memory environment?

出于演示目的,我在低内存环境中 运行ning Neo4j -- 笔记本电脑有 4GB RAM,1644MB 用于视频内存,仅剩 2452 MB 可用..它也是运行ning SQL 服务器、我们的 WCF 服务和我们的客户端.. 所以 Neo4j 的内存很少。

我正在 运行通过 REST 从 C# 服务加载 CSV 密码脚本。有 20 多个脚本,它们在服务器环境中运行良好。我已经编写了分页代码,因此它们 运行 分批次。我已经将批次大小减小到非常低(25 个 csv 行)并且给定的脚本可以执行 300 个批次,但在某些时候我继续收到 "Java heap space" 错误。

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

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

我 运行在 Windows 7 笔记本电脑上使用 Neo4j 2.2.1 社区版,4G 内存。

想法?

也许您可以分享您的 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 运行s neo4j in memory 在一个千兆字节的内存中放置多达 50 个实例。所以应该是可行的。