2016-05-31 84 views
2

我有一個Vertex節點實體,它有一個關係列表。Neo4j:GC監視器:應用程序線程被阻止

@NodeEntity (label="User") 
public class Vertex { 
    private Long id; 
    private String name; 
    @Index(unique=true) 
    private String email; 
    @Relationship(type="WORKS_WITH", direction = Relationship.OUTGOING) 
    private List<Edge> teammates; 
.. 
} 

@RelationshipEntity(type = "WORKS_WITH") 
public class Edge { 
    @GraphId 
    private Long relationshipId; 
    @Property 
    private double weight; 
    @StartNode 
    private Vertex src; 
    @EndNode 
    private Vertex dest; 
} 

我有一個Spring Boot應用程序,我用本地neo4j服務器使用spring-data-neo4j(4.0.0)。當我在邊緣列表中保存具有3-10條邊的頂點對象時,效果很好。如果邊緣列表變大(最多20-30個邊緣對象),應用程序將無法保存頂點。 我節省使用GraphRepository從org.springframework.data.neo4j頂點:

vertexRepository.save(vertex); 

我已經離開所有的轉向參數爲默認值,因爲我沒有保存大量數據的呢。我已經設置了存儲池的大小和持久代空間:

export JAVA_OPTS="-Xmx256M -XX:MaxPermSize=512M" 

在消息日誌我得到:

2016-05-31 12:12:06.592+0000 WARN [o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 327ms. 
2016-05-31 12:12:08.256+0000 WARN [o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 260ms. 
2016-05-31 12:12:09.915+0000 WARN [o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 258ms. 
2016-05-31 12:12:12.690+0000 WARN [o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 269ms. 

的Neo4j的文件表明,2萬個節點需要堆512MB的這樣對我的情況就足夠了。

我的機器是 Google Compute Engine實例:自定義(2個vCPU,8 GB內存)。這裏可能是什麼問題?

回答

1

升級到SDN 4.1.1解決了我的問題。