2015-04-15 22 views
1

为了演示的目的,我在低内存环境下运行Neo4j - 一台带有4GB内存的笔记本电脑,1644MB用于显存,剩下只有2452 MB可用。它还运行SQL Server,我们的WCF服务,和我们的客户..所以Neo4j的内存很少。如何配置Neo4j在最小的内存环境中运行?

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

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

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

我正在使用4G RAM的Windows 7笔记本电脑上运行此操作 - 使用Neo4j 2.2.1 Community Edition。

想法?

回答

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在内存放多达50个实例在一个单独的内存千兆字节。所以它应该是可行的。

+0

这解决了我眼前的问题......但是。看一个相对简单的案例生成的计划,我肯定会得到一些“渴望”的事情发生,并拉动比我应该更多的记录。需要了解为什么会发生这种情况。但这是一个单独的问题和答案。非常感谢! –

相关问题