Как увеличить размер кучи в 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
.