Neo4j:GC Monitor:阻止应用程序线程

时间:2016-05-31 12:26:08

标签: neo4j spring-data-neo4j spring-data-neo4j-4

我有一个顶点节点实体,它有一个关系列表。

@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应用程序,我正在使用spring-data-neo4j(4.0.0)和本地neo4j服务器。当我在边缘列表中保存具有3-10个边的Vertex对象时,它可以正常工作。如果边列表变大(最多20-30个边对象),则应用程序无法保存顶点。 我使用org.springframework.data.neo4j中的GraphRepository保存顶点:

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文档表明,对于200万个节点,你需要512Mb的堆才能满足我的需求。

我的机器是 Google Compute Engine实例:自定义(2个vCPU,8 GB内存)。这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

升级到SDN 4.1.1解决了我的问题。