ошибка кучи памяти neo4j jvm: Neo.Ошибка TransientError.Общая информация.Ошибка OutOfMemoryError

#neo4j

#neo4j

Вопрос:

Я использую neo4j community edition. Я хочу запустить запрос, который проверяет 40 миллионов узлов и при необходимости обновляет их конкретное свойство. Но запрос завершается ошибкой с этим сообщением:

Ошибка запроса: {код: Neo.Ошибка TransientError.Общая информация.OutOfMemoryError} {сообщение: недостаточно памяти для выполнения текущей задачи. Пожалуйста, попробуйте увеличить ‘dbms.memory.heap.max_size’ в конфигурации neo4j (обычно в ‘conf / neo4j.conf’ или, если вы используете Neo4j Desktop, найти через пользовательский интерфейс) или, если вы используете встроенную установку, увеличьте кучу с помощью команды ‘-Xmx’отметьте строку, а затем перезапустите базу данных. }

Итак, я увеличивал dbms.memory.heap.max_size и dbms.memory.heap.initial_size снова и снова, одинаковое значение для обоих. Несмотря на увеличение их до 8192g, эта проблема возникает снова. Должен ли я увеличить его больше? или это связано с ограничением памяти в версии сообщества? предварительно благодарим вас за любое решение! 🙂

Ответ №1:

В этом случае необходимо пакетировать узлы, а затем выполнять запрос для каждого пакета. Это возможно с помощью плагина apoc и вызывающей процедуры apoc.periodic.iterate , например:

 call apoc.periodic.iterate('statement returning items', 'statement per item', {batchSize:100000, batchMode:"BATCH"}
  

Более подробная информация описана здесь