2014-09-03 101 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