有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

性能远程Neo4j在JavaTinkerpop3Bolt设置中随时间变慢

在一台服务器上运行Neo4j数据库,并从同一网络中的不同服务器使用它时,我们遇到了性能问题。主要问题是,当定期运行相同的集成测试时,它们会随着时间的推移变得越来越慢

我们目前的设置是:

  • Tinkerpop3服务器1上的图形API(Java),使用neo4j-gremlin-bolt通过Bolt协议将此API与远程Neo4j服务器一起使用
  • 正在运行Neo4j3.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数据库中删除所有节点和关系,但我们观察到性能问题

  1. 数据库大小持续增长:节点存储。db和relationshipstore。即使删除了所有节点,数据库仍然会增长。这个问题将在{a1}讨论。我还不能解决这个问题,但目前它并不重要
  2. 一个关键问题是,我们的测试随着时间的推移变得越来越慢。显然,与前面提到的HTTP客户端相比Bolt本身具有更高的延迟。然而,这并不能解释我们必须处理的持续减速。无论是this还是this都没有帮助,使用store-utils还是removing the whole graph directory都不是计划中的实时系统的合理选择

我的中心问题是:我们在设置Java-Neo4j连接时是否犯了逻辑错误,或者Neo4j是否存在关键的性能问题(因为我发现了上面提到的类似帖子)


共 (0) 个答案