在Java-Tinkerpop3-Bolt设置中,远程Neo4j随着时间的推移变得越来越慢

时间:2017-07-03 13:31:47

标签: java performance neo4j gremlin tinkerpop3

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

我们目前的设置是:

    服务器1上的
  • Tinkerpop3图形API(Java),使用neo4j-gremlin-bolt通过Neo4j协议将此API与远程 Bolt服务器配合使用
  • 运行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数据库中的所有节点和关系,但我们会发现性能问题。

  1. 持续数据库大小增长:即使删除所有节点,nodestore.db和relationshipstore.db仍然会增长。我们讨论了这个问题here。我还没有解决这个问题,但目前并不重要
  2. 关键问题然后是我们的测试随时间变慢的事实。显然,与Bolt客户端相比,HTTP本身具有更高的延迟时间here。但是,并没有解释我们必须处理的持续放缓thisthis都没有帮助,使用store-utilsremoving the whole graph directory都不是计划中的实时系统的合理选项。
  3. 我的核心问题是:我们在设置Java-Neo4j连接时是否存在逻辑错误,或者Neo4j存在严重的性能问题?(因为我发现了提到的类似帖子)

0 个答案:

没有答案