Как увеличить размер кучи в Corb2 на MarkLogic

Я пытаюсь запустить созданный мной фреймворк для удаления, который содержит очень большой объем данных. При попытке запустить Corb2 я получаю следующее предупреждение, а иногда и ошибку из-за нехватки памяти.

      WARNING: Slow receive! Consider increasing max heap size and using -XX:+UseConcMarkSweepGC

Ошибка:

      Sep 23, 2021 1:06:23 PM com.marklogic.developer.corb.QueryUrisLoader closeRequestAndSession
INFO: closing uris session
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:3332)
        at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
        at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596)
        at java.lang.StringBuilder.append(StringBuilder.java:190)
        at com.marklogic.io.IOHelper.literalStringFromReader(IOHelper.java:50)
        at com.marklogic.io.IOHelper.literalStringFromStream(IOHelper.java:66)
        at com.marklogic.http.MultipartBuffer.getBodyAsString(MultipartBuffer.java:75)
        at com.marklogic.xcc.impl.AbstractResultSequence.instantiateResultItem(AbstractResultSequence.java:138)
        at com.marklogic.xcc.impl.StreamingResultSequence.next(StreamingResultSequence.java:147)
        at com.marklogic.xcc.impl.StreamingResultSequence.next(StreamingResultSequence.java:166)
        at com.marklogic.developer.corb.QueryUrisLoader.populateQueue(QueryUrisLoader.java:212)
        at com.marklogic.developer.corb.QueryUrisLoader.createAndPopulateQueue(QueryUrisLoader.java:201)
        at com.marklogic.developer.corb.QueryUrisLoader.open(QueryUrisLoader.java:122)
        at com.marklogic.developer.corb.Manager.runUrisLoader(Manager.java:809)
        at com.marklogic.developer.corb.Manager.populateQueue(Manager.java:830)
        at com.marklogic.developer.corb.Manager.run(Manager.java:578)
        at com.marklogic.developer.corb.Manager.main(Manager.java:138)

Кто-нибудь использовал его (особенно с JavaScript) для работы с большими объемами данных?

1 ответ

Вместо того, чтобы пытаться найти правильный размер памяти для размещения всех URI в памяти, включите опцию DISK-QUEUE, чтобы разрешить очереди URI перетекать на диск во временном файле, который используется, вместо того, чтобы все хранится в памяти.

Вы можете дополнительно настроить путь для записи временных файлов с помощью DISK-QUEUE-TEMP-DIR. Если не указано иное, будет использоваться TEMP-DIR или java.io.tmpdir.

Другие вопросы по тегам