代码之家  ›  专栏  ›  技术社区  ›  Loredra L

在循环中运行遍历后由于内存而导致V8崩溃

  •  0
  • Loredra L  · 技术社区  · 6 年前

    我在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)
    

    0 回复  |  直到 6 年前
        1
  •  1
  •   dothebart    5 年前

    请使用 AQL traversals 以获得更好的性能和更少的V8执行限制。

    V8对字符串的限制是256mb,对于更大的遍历,这个限制可能会被旧的遍历实现所影响,遗憾的是我们对此无能为力。

    have had similar observations

    推荐文章