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內存)。這裏可能是什麼問題?