尽管堆大小增加,但ArangoDB Graph Traversal仍然失败

问题描述 投票:0回答:1

ArangoDB版本:3.3.14

应用程序的堆统计:{ total_heap_size: 39108608, total_heap_size_executable: 3670016, total_physical_size: 37433512, total_available_size: 8735662896, used_heap_size: 28891504, heap_size_limit: 8769069275, malloced_memory: 16384, peak_malloced_memory: 168484640, does_zap_garbage: 0 }

我有一个遍历api,遍历3个顶点并返回大约300个文档顶点。对于200我得到了正确的响应但是当我将顶点数增加到300时,遍历api会抛出错误的无效字符串长度。我已经将应用程序的堆空间增加到8GB,但是从下面可以看出,heap_used远远不够。我不确定这个问题是否在序列化到JSON期间,因为有足够的堆内存可用,或者是否有其他选项可用于获取完整数据。

AQL查询(如果适用):{"request":{"vertex":"start_vertex","start_vertex":"service_teams/9a2e582997494bee9066bbcf2aa52218","start_vertices":null,"opts":{"expander":"var connections = [];\n config.datasource.getOutEdges(vertex).forEach(function (e) {\n if( (e._id.indexOf(\"loc_has_parent_loc\") > -1) || (e._id.indexOf(\"loc_is_associated_with_org\") > -1) || (e._id.indexOf(\"st_is_allocated_loc\") > -1) ) {\n connections.push({ vertex: require(\"internal\").db._document(e._to), edge: e});\n }\n });\n return connections;"},"collection_name":"","edge_name":"","data":true,"path":false}},"err":{"code":500,"message":"Invalid string length"}}

arangodb
1个回答
0
投票

您在这里看到的错误消息是V8错误消息,因此这是一个javscript实现限制。 V8允许最大256 MB的字符串。

旧的图遍历API在Javascript中实现,并且用于处理可以在中间对文档进行字符串化,从而达到此限制。

prefer AQL-Traversals instead获得更好的表现。

© www.soinside.com 2019 - 2024. All rights reserved.