我们正试图从多个nodejs进程访问Neo4J图形数据库服务器。每个进程都创建自己的连接并尝试连接/写入neo4j数据库。我们尝试了大约10个进程,它无法处理这些连接。
鉴于此,所有连接都具有高工作负载。
有人可以建议Neo4J DB使用多少个并行连接是否切实可行以及如何扩展以支持更多连接?
编辑:更多信息 连接是使用'neo4j'npm包创建的,如下所示:
var neo4j = require('neo4j')
var config = require('./config')
var graph = new neo4j.GraphDatabase(config.db.neo4j)
//usage
graph.query(query, params, function(err, result){
//
})
我假设每个进程,这个代码创建了新的连接('graph'变量的每个实例),因为似乎没有任何池化机制。
我假设基于生成的nodejs进程的连接数(所有进程都是单线程的)。
答案 0 :(得分:1)
不确定这是否对您有所帮助,但是如果您想要执行并发读/写,那么对此没有限制。 但是,您需要考虑的主要问题是您要执行的操作。如果您执行简单的读取/写入操作并不昂贵,那么与您希望执行更重的操作相比,您可以获得更多的并发请求。
例如,有一些时间我试图并行运行5-6个图形查询,实际上我崩溃了服务器。 另一方面,我现在使用的一些脚本并行运行接近50-100个查询,没有问题。
答案 1 :(得分:0)
我有同样的问题。尝试使用@qualitech/Qneo4j
npm软件包进行连接。
尝试使用autoclosedriver
更改参数false
。
const QNeo4j = require('@qualitech/qneo4j')
// simplest
const db = new QNeo4j({
url: 'bolt://localhost:7687'
})
// full options
const db = new QNeo4j({
url: 'bolt://localhost:7687',
username: 'neo4j', // default: 'neo4j'
password: 'admin', // default: 'admin'
// description: if true, returns raw value of the Neo4j.
raw: false, // default: false,
// description: closes the Neo4j driver after the execute method or transaction.
autoCloseDriver: true, // default: true
// description: expects to receive a callback function. This callback is called every time an error occurs within the QNeo4j module.
notifyError: (error, query) => console.log(error, query),
// description: all configuration available to the driver Neo4j can be set here. See more https://neo4j.com/docs/driver-manual/current/client-applications/
driverConfig: {
// ... neo4j driver configuration
}
})
在driverConfig
中使用示例
{
maxConnectionLifetime: 3 * 60 * 60 * 1000, // 3 hours
maxConnectionPoolSize: 50,
connectionAcquisitionTimeout: 2 * 60 * 1000 // 120 seconds
connectionTimeout:
maxTransactionRetryTime:
}
https://neo4j.com/docs/driver-manual/current/client-applications/中的所有选项