Я что-то не так делаю с этим запросом гремлина? Разве это не эффективный запрос? Мои 2 экземпляра nodejs на AWS используют клиент gremlin, который общается через веб-сокеты через AWS ELB с 2 экземплярами сервера Titan 1.0 / gremlin. Серверная часть - это DynamoDB. Теперь у нас настроена правильная пропускная способность чтения / записи для DynamoDB.
Бревно:
WARN 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 (пользователь) .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 (eIsAmin). ), __. has ('shareToType', userType) .outV (). hasLabel (userLabel) .has ('userId', userId) .outE (eHasAccessToLabel)). as ('role'). inV (). select ( 'role', 'path'). by ('role'). by ('path') ;,
bindings = {tenantId = 1, userLabel = User, userId1 = 2, eIsOwnedByLabel = is_owned_by, eHasAccessToLabel = has_access_to, eIsMemberOfLabel = is_member_of, eIsAdminOfLabel = is_member_of, eIsAdminOfLabel = groupLabel = groupIdmin = groupIdmin = groupIdmin = groupIdmin = группа_admin_admin = группа_admin_admin = группа }, accept = application / json, language = 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 ":" Ошибка "," стек ":" Ошибка: null (Ошибка 597) \ n в GremlinClient.handleProtocolMessage (/opt/application/sharing-app/node_modules/gremlin/lib/GremlinClient.js:204:39)\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
Я попытался запустить profile () локально с помощью gV (). Has ("userId", '1'). Has ("tenantId", '2'). HasLabel ('User'). OutE ('is_owned_by'). ...: ==> Показатели обхода
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