Tag: arangojs

如何提高负载下的ArangoDB性能(多个并发查询)?

我们使用ArangoDB和PostgreSQL来存储几乎相同的数据。 PostgreSQL用于执行关系数据库可以很好地执行的一般types的查询。 selectArangoDB来执行graphics遍历等查询,find最短path等。 目前,我们有一个在PostgreSQL中有160000条logging的表,在ArangoDB中有一个与文档数量相同的集合。 我们正在使用的API将被多个用户同时使用,所以我首先要检查的是ArangoDB和PostgreSQL在负载下如何执行。 我创build了一个简单的负载testing,作为一个工作负载执行一个简单的select查询与filter既ArangoDB和PostgreSQL。 查询使用按date过滤字段select前N个logging/文档。 当我运行负载testing时,对PostgreSQL的所有查询都在0.5秒内执行,我将用户数量从10增加到100,并且完全不影响执行时间。 对于ArangoDB来说,同样的查询需要花费大约2秒钟的时间,然而,响应时间与并发用户的数量成正比。 有30个并发用户,等待60秒后,所有查询都会超时。 我试图debuggingarangojs连接器,发现这一点: var maxTasks = typeof agent.maxSockets === 'number' ? agent.maxSockets * 2 : Infinity; 和这个: Connection.agentDefaults = { maxSockets: 3, keepAlive: true, keepAliveMsecs: 1000 }; 这意味着默认的arangojs行为是同时向ArangoDB发送不超过6个并发查询,这导致所有其余查询在Node.js端排队。 我试图增加数量,但它没有帮助,现在看起来像所有的查询排队在ArandoDB一侧。 现在,如果我运行加载并尝试使用ArangoDB Web Interface执行一些查询,则查询将提交不可预测的时间量(取决于当前用户的数量),然后返回结果并显示它已被执行在大约4秒内这是不正确的。 对我来说,看起来像ArangoDB一次只能执行一个查询,而所有其他查询排队… 我错过了什么吗? 有没有什么设置来调整ArangoDB并提高它在负载下的性能? 更新: 我们使用ArangoDB 3.0,并将其作为Docker容器(来自官方图片)与1.5 GB的RAM一起运行。 样本文件(我们有大约16000个): { "type": "start", "from_date": "2016-07-28T10:22:16.000Z", "to_date": "9999-06-19T18:40:00.000Z", […]

简单的查询与arangodb和nodejs

我想执行一个简单的查询在我的数据库arangodb与nodejs的login页面。 var arango = require('arangojs'); /*—*/ Database = arango.Database; db = new Database('http://127.0.0.1:8529'); db.useDatabase('MyDB'); db.useBasicAuth('root', 'root'); /*—*/ //Post Methods var username; var passworddb; //Login method app.post('/', function (request, response) { username = request.body.user.name; db.query('FOR u IN User FILTER u.firstname == "'+username+'" RETURN u.password').then( cursor => cursor.all() ).then( key => console.log('key:', key), //key => passworddb = […]