У меня есть узел узла вершины, который имеет список отношений.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 загрузки, и я использую пружинные данные-Neo4j (4.0.0) с локальным сервером Neo4j. Когда я сохраняю объект Vertex с 3-10 ребрами в списке краев, он работает хорошо. Если список ребер становится больше (до 20-30 краевых объектов), приложение не сможет сохранить вершину. откладываю вершину с помощью GraphRepository из org.springframework.data.neo4j:
vertexRepository.save(vertex);
Я оставил все параметры Tunning по умолчанию, так как я не сохранение больших объемов данных пока нет. Я установил размер пула памяти и постоянное место поколения к:
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 Instance: пользовательский (2 vCPU, 8 ГБ памяти). Что может быть проблемой здесь?