我对这个 gremlin 查询做错了吗?这不是一个高性能查询吗?我在 AWS 上的 2 个 nodejs 实例使用 gremlin 客户端,它通过 AWS ELB 通过 websockets 与 2 个 Titan 1.0/gremlin 服务器实例进行通信。后端是 DynamoDB。我们现在为 DynamoDB 配置了正确的读/写吞吐量。
日志:
警告 org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor - 异常处理请求的脚本 [RequestMessage{, requestId=r1, op='eval', processor='', args={gremlin=
def user = gV().has("userId", userId1).has("tenantId", tenantId).hasLabel(userLabel).next();gV(user).outE(eIsOwnedByLabel).inV().as( 'path').inE(eHasAccessToLabel).or( .has('shareToType',allType).outV().has('tenantId',tenantId).outE(eHasAccessToLabel), .has('shareToType',groupType)。 outV().hasLabel(groupLabel).inE(eIsMemberOfLabel,eIsAdminOfLabel).outV().has('userId',userId).outE(eIsMemberOfLabel,eIsAdminOfLabel).inV().outE(eHasAccessToLabel),__.has(' shareToType',userType).outV().hasLabel(userLabel).has('userId',userId).outE(eHasAccessToLabel)).as('role').inV().select('role','path' ).by('角色').by('路径');,
bindings={tenantId=1, userLabel=User, userId1=2, eIsOwnedByLabel=is_owned_by, eHasAccessToLabel=has_access_to, eIsMemberOfLabel=is_member_of, eIsAdminOfLabel=is_admin_of, userId=a1, groupLabel=Group, groupType=group, userType=user, allType=all },接受=应用程序/json,语言=gremlin-groovy}}]。org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException
当我们进行压力测试时,gremlin 服务器停止响应并给我们这样的错误:
{"name":"logger","hostname":"a","pid":27881,"level":"ERROR","err":{"message":"null (Error 597)","name ":"Error","stack":"错误:在 GremlinClient.handleProtocolMessage (/opt/application/sharing-app/node_modules/gremlin/lib/GremlinClient.js:204:39) 处为空(错误 597)\n在 WebSocketGremlinConnection。(/opt/application/sharing-app/node_modules/gremlin/lib/GremlinClient.js:120:23)\n 在 emitOne (events.js:96:13)\n 在 WebSocketGremlinConnection.emit (events.js :188:7)\n 在 WebSocketGremlinConnection.handleMessage (/opt/application/sharing-app/node_modules/gremlin/lib/WebSocketGremlinConnection.js:69:12)\n 在 WebSocketGremlinConnection._this.ws。onmessage (/opt/application/sharing-app/node_modules/gremlin/lib/WebSocketGremlinConnection.js:46:20)\n
我尝试使用 gV().has("userId", '1').has("tenantId", '2').hasLabel('User').outE('is_owned_by') 在本地运行 profile()。 ...:==>遍历指标
Step Count Traversers Time (ms) % Dur
=============================================================================================================
TitanGraphStep([userId.eq(51ce1780-1998-47eb-a1... 0 0 190.524 24.91
optimization 176.456
backend-query 0 6.074
backend-query 0 5.067
TitanVertexStep(OUT,[is_owned_by],vertex)@[path] 0 0 0.005 0.00
TitanVertexStep(IN,[has_access_to],edge) 0 0 190.539 24.91
OrStep([[HasStep([shareToType.eq(all)]), Profil... 0 0 0.012 0.00
HasStep([shareToType.eq(all)]) 0 0 0.000
EdgeVertexStep(OUT) 0 0 0.000
HasStep([tenantId.eq(ndgThunderDome)]) 0 0 0.000
TitanVertexStep(OUT,[has_access_to],edge) 0 0 0.000
HasStep([shareToType.eq(group)]) 0 0 0.000
EdgeVertexStep(OUT) 0 0 0.000
HasStep([~label.eq(Group)]) 0 0 0.000
TitanVertexStep(IN,[is_member_of, is_admin_of... 0 0 0.000
HasStep([userId.eq(a257c260-261f-45df-a1e7-92... 0 0 0.000
TitanVertexStep(OUT,[is_member_of, is_admin_o... 0 0 0.000
TitanVertexStep(OUT,[has_access_to],edge) 0 0 0.000
HasStep([shareToType.eq(user)]) 0 0 0.000
EdgeVertexStep(OUT) 0 0 0.000
HasStep([~label.eq(User)]) 0 0 0.000
HasStep([userId.eq(a257c260-261f-45df-a1e7-92... 0 0 0.000
TitanVertexStep(OUT,[has_access_to],edge) 0 0 0.000
EdgeVertexStep(IN) 0 0 190.550 24.91
SelectStep([role, path],[value(role), value(pat... 0 0 0.021 0.00
SideEffectCapStep([~metrics]) 1 1 193.286 25.27
>TOTAL - - 764.940 -
TIA