我们在一台服务器上运行Neo4j
数据库时遇到性能问题,并在同一网络中的其他服务器上使用它。主要问题是,在定期运行相同的集成测试时,它们会随着时间的推移而变得 。
我们目前的设置是:
Tinkerpop3
图形API(Java),使用neo4j-gremlin-bolt
通过Neo4j
协议将此API与远程 Bolt
服务器配合使用Neo4j
3.0.4 在服务器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
数据库中的所有节点和关系,但我们会发现性能问题。
Bolt
客户端相比,HTTP
本身具有更高的延迟时间here。但是,并没有解释我们必须处理的持续放缓。 this或this都没有帮助,使用store-utils和removing the whole graph directory都不是计划中的实时系统的合理选项。我的核心问题是:我们在设置Java-Neo4j连接时是否存在逻辑错误,或者Neo4j存在严重的性能问题?(因为我发现了提到的类似帖子)