Заставьте Gremlin Server использовать ВСЕ процессорные ядра - PullRequest
0 голосов
/ 15 февраля 2020

Я использую Neo4j на Gremlin Server и OrientDB на Gremlin Server и клиентское приложение Java. На моем оборудовании p c 8 процессорных ядер, где находится сервер gremlin (клиентское приложение java находится на другом компьютере), однако я заметил, что Gremlin Server использует только 1 процессорное ядро ​​для выполнения моего запроса, даже если это длительный запрос. Мой вопрос следующий:

  1. Есть ли способ заставить Gremlin Server использовать ВСЕ 8 процессорных ядер на моем оборудовании p c для выполнения моего запроса вместо одного?

  2. Есть ли способ доступа и изменения параметров конфигурации базы данных графа, которыми управляет Gremlin Server. то есть получить доступ и изменить настройки конфигурации neo4j в Gremlin Server?

  3. Есть ли способ получить метку времени начала выполнения запроса на сервере gremlin (т.е. после того, как клиент сериализует и отправит данные по сети на сервер gremlin, сервер gremlin десериализует данные и в тот момент, когда сервер gremlin готов выполнить запрос?). Я знаю класс TimeUtil, но он дает мне только продолжительность в миллисекундах, что требуется серверу gremlin для выполнения запроса на стороне, а не метка времени.

Большое спасибо.

1 Ответ

1 голос
/ 18 февраля 2020

Есть ли способ заставить Gremlin Server использовать ВСЕ 8 процессорных ядер на моем оборудовании p c для выполнения моего запроса вместо одного?

Что ж, запрос Gremlin Использование ресурсов в значительной степени будет связано с базовым исполнением системы графов (в вашем случае neo4j или orientdb). Если базовая графическая система может распараллелить какой-либо аспект запроса, то я думаю, что вы увидите больше использования процессора. Если вы ищете массово параллельные типы запросов для крупномасштабных графиков, вам может потребоваться просмотреть OLAP-обходы с помощью Gremlin over Spark .

Есть ли способ доступа и измените параметры конфигурации базы данных графа, которыми управляет Gremlin Server. то есть получить доступ и изменить настройки конфигурации neo4j в Gremlin Server?

Если вы спрашиваете, есть ли какой-нибудь API для изменения настроек конфигурации neo4j через Gremlin Server, то нет, это невозможно. Однако все параметры конфигурации neo4j можно изменить с помощью файла конфигурации, который вы предоставляете Gremlin Server, который создает экземпляр neo4j, как описано здесь . По сути, для конфигураций neo4j c нужно добавить префикс gremlin.neo4j.conf.. Например, чтобы установить опцию конфигурации dbms.index_sampling.background_enabled, вы должны сделать:

gremlin.graph=org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph
gremlin.neo4j.directory=/tmp/neo4j
gremlin.neo4j.conf.dbms.index_sampling.background_enabled=true

Есть ли способ получить метку времени начала выполнения запроса на сервере gremlin (т.е. после сериализации клиента и отправить данные по сети на сервер gremlin, сервер gremlin десериализует данные и в тот момент, когда сервер gremlin готов выполнить запрос?). Я знаю класс TimeUtil, но он дает мне только продолжительность в миллисекундах, в течение которой серверу gremlin требуется выполнить запрос на стороне, а не метка времени.

Нет, эта метка времени не захватывается, хотя это может быть хороший кусок метаданных, который Gremlin Server может вернуть в будущем. Если бы вы использовали сценарии (а не обходы на основе байт-кода), я полагаю, вы могли бы взять метку времени и сложить ее в свой результат:

start = System.currentTimeMillis()
[start, g.V().has('person','name','marko').toList()]

Я не могу сказать, что полностью одобрил бы этот подход, поскольку он связывает встроенные строки для ваших запросов, но они по крайней мере позволяют получить временную метку.

...