我在arangoDB 3.3.11下运行了一个Foxx应用程序。以类似的方式进行压力测试;
var traverser=new traversal.Traverser(config);
//Loop through an list of entities and do traversal on each of them
BigArray.forEach(function(e){
var vertex=db._document(e);
traverser.traverse(result,vertex)
})遍历本身并没有什么特别之处,只是当且仅当满足某些条件时,它的config.visitor才被用来推送顶点。
config.visitor=function(config,result,vertex,path){
//Write a vertex if conditions are right. Vertex normal size json object
if(hashTable[vertex.id])
result.push(vertex);
}这样,内存就会慢慢地积累起来,然后崩溃并返回canceled request
{"error":true,"errorMessage":"canceled request","code":410,"errorNum":21}与堆大小警告一起使用
reached heap-size limit, interrupting V8 execution (heap size limit 3254779904, used 3140128304)在循环中使用遍历有什么注意事项吗?使用小数组时,应用程序仍然有效,但如果使用复杂且足够大的数组,则会出现错误。我总是认为每一次遍历都是一个独立的函数,在每次迭代中,GC都会自己扫入并管理内存。
发布于 2019-03-04 18:45:53
为了获得更好的性能和更少的V8执行限制,请使用AQL traversals。
V8对字符串有256MB的限制,似乎对于更大的遍历,旧的遍历实现可能会达到这个限制,不幸的是,我们对此无能为力。
https://stackoverflow.com/questions/54538543
复制相似问题