性能远程Neo4j在JavaTinkerpop3Bolt设置中随时间变慢
在一台服务器上运行Neo4j
数据库,并从同一网络中的不同服务器使用它时,我们遇到了性能问题。主要问题是,当定期运行相同的集成测试时,它们会随着时间的推移变得越来越慢
我们目前的设置是:
Tinkerpop3
服务器1上的图形API(Java),使用neo4j-gremlin-bolt
通过Bolt
协议将此API与远程Neo4j
服务器一起使用- 正在运行
Neo4j
3.0.4的服务器2
在服务器1上的Java中,我们对以下导入进行了集成测试:
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import com.steelbridgelabs.oss.neo4j.structure.Neo4JGraph;
import org.apache.tinkerpop.gremlin.structure.Graph;
和代码类似于:
Driver driver = GraphDatabase.driver(...);
public void clearGraph() {
Graph graph = new Neo4jGraph(driver,...);
try (Transaction transaction = graph.tx()) {
// Query/add/delete data in the graph.
transaction.commit();
}
graph.close();
}
尽管我们的测试定期从Neo4j
数据库中删除所有节点和关系,但我们观察到性能问题
- 数据库大小持续增长:节点存储。db和relationshipstore。即使删除了所有节点,数据库仍然会增长。这个问题将在{a1}讨论。我还不能解决这个问题,但目前它并不重要李>
- 一个关键问题是,我们的测试随着时间的推移变得越来越慢。显然,与前面提到的
HTTP
客户端相比Bolt
本身具有更高的延迟。然而,这并不能解释我们必须处理的持续减速。无论是this还是this都没有帮助,使用store-utils还是removing the whole graph directory都不是计划中的实时系统的合理选择李>
我的中心问题是:我们在设置Java-Neo4j连接时是否犯了逻辑错误,或者Neo4j是否存在关键的性能问题(因为我发现了上面提到的类似帖子)
共 (0) 个答案