2014-09-03 132 views
1

我有Neo4j的模式非常简单。只有一种类型的节点和一种可以绑定节点的关系。每个节点都有一个属性(索引),每个关系有四个属性。这些是数字:如何为特定任务配置Neo4j

neo4j-sh (?)$ dbinfo -g "Primitive count" 
{ 
    "NumberOfNodeIdsInUse":, 
    "NumberOfPropertyIdsInUse": 109295019, 
    "NumberOfRelationshipIdsInUse": 44903404, 
    "NumberOfRelationshipTypeIdsInUse": 1 
} 

我在Debian,7核心和26GB内存的虚拟机上运行此数据库。这是我的Neo4j配置:

neo4j.properties:

neostore.nodestore.db.mapped_memory=3000M 
neostore.relationshipstore.db.mapped_memory=4000M 
neostore.propertystore.db.mapped_memory=4000M 
neostore.propertystore.db.strings.mapped_memory=300M 
neostore.propertystore.db.arrays.mapped_memory=300M 

的Neo4j-wrapper.conf:

wrapper.java.additional=-XX:+UseParallelGC 
#wrapper.java.additional=-XX:+UseConcMarkSweepGC 
wrapper.java.additional=-XX:+CMSClassUnloadingEnabled 
wrapper.java.initmemory=2000 
wrapper.java.maxmemory=10000 

我使用UseParallelGC代替UseConcMarkSweepGC,因为我注意到,与UseConcMarkSweepGC只有一个CPU核心在查询过程中使用,当我更改为UseParallelGC时,所有核心都已使用。我不会并行运行任何查询。只有一个在Neo4j的壳一时间,但大多是有关整个节点集例如:

match (n:User)-->(k:User) 
return n.id, count(k) as degree 
order by degree desc limit 100; 

,它需要726230毫秒去执行它。我也试过:

match (n:User)-->()-->(k:User) 
return n.id, count(DISTINCT k) as degree 
order by degree desc limit 100; 

,但很长一段时间我只得到后“错误发生在服务器线程;嵌套例外是: java.lang.OutOfMemoryError:GC开销超过限制”。我没有考虑考虑关系属性的限制查询,但它也是计划的。 我认为我的配置不是最佳的。我注意到Neo4j在查询期间最多使用50%的系统内存,剩余的内存空闲。我可以通过在wrapper.java.maxmemory中设置更大的值来改变这一点,但我已经读过,我必须为mapped_memory设置留下一些内存。但是,我不确定是否将它们考虑在内,因为在查询期间存在大量可用内存。我应该如何设置这些查询的配置?

回答

1

您的查询是随着数据量增加而变慢的全局查询。对于每个用户节点计算传出关系的数量,放入集合中并按计数排序。这种操作会消耗大量的CPU和内存。而不是调整配置,我想你最好重构你的图形模型。

根据您的使用情况,考虑将用户的degree存储在用户节点的属性中。当然,任何添加/删除用户关系的操作都需要反映在degree属性中。此外,您可能需要索引degree属性。

+0

我知道我的查询消耗了大量的CPU和内存。但是,我的图形模型已经被优化,因为我没有将两个用户之间的每个通信事件存储为单独的关系。相反,我把它们聚合成一个关系,所以两个用户之间至多有两个关系。一个用于传出通信事件​​,另一个用于传入。在我的使用情况下,存储财产的程度将无济于事。我想调整我的配置的原因是,即使在这样的消费查询期间,我仍然有大约10GB的可用内存。 – Cob 2014-09-04 07:25:55

+0

另一种方法可能是使用Neo4j的Java API将该查询重构为非托管扩展。对于非托管扩展,我已经取得了一些很好的经验,与cypher esp相比显着更快。对于大型查询,请参阅docs.neo4j.org/chunked/stable/server-unmanaged-extensions.html – 2014-09-04 07:39:16