WSO2 DAS — ошибка при просмотре данных индекса. Далее: сбой карты.

Мой сценарий,

У меня есть некоторые детали транзакции в базе данных Mysql. Я использую сервер WSO2 ESB и передаю эти данные на сервер WSO2 DAS (сохраняю данные в базе данных H2 с первичным ключом и индексом). Данные успешно загружены на сервер DAS, но проблема, с которой я сталкиваюсь, заключается в том, что я постоянно вижу ОШИБКУ в своей консоли DAS каждые три секунды. Ошибка приведена ниже.

    [2016-04-21 09:09:48,175] ERROR {org.wso2.carbon.analytics.dataservice.core.indexing.AnalyticsDataIndexer} -  Error in p
rocessing index batch operations: Error in index data peekNext: Map failed
org.wso2.carbon.analytics.datasource.commons.exception.AnalyticsException: Error in index data peekNext: Map failed
        at org.wso2.carbon.analytics.dataservice.core.indexing.LocalIndexDataStore$LocalIndexDataQueue.peekNext(LocalInd
exDataStore.java:287)
        at org.wso2.carbon.analytics.dataservice.core.indexing.AnalyticsDataIndexer.processLocalShardDataQueue(Analytics
DataIndexer.java:297)
        at org.wso2.carbon.analytics.dataservice.core.indexing.AnalyticsDataIndexer.processIndexOperations(AnalyticsData
Indexer.java:261)
        at org.wso2.carbon.analytics.dataservice.core.indexing.AnalyticsDataIndexer.access$200(AnalyticsDataIndexer.java
:141)
        at org.wso2.carbon.analytics.dataservice.core.indexing.AnalyticsDataIndexer$IndexWorker.run(AnalyticsDataIndexer
.java:1865)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Map failed
        at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:888)
        at com.leansoft.bigqueue.page.MappedPageFactoryImpl.acquirePage(MappedPageFactoryImpl.java:86)
        at com.leansoft.bigqueue.BigArrayImpl.append(BigArrayImpl.java:325)
        at com.leansoft.bigqueue.BigQueueImpl.enqueue(BigQueueImpl.java:92)
        at org.wso2.carbon.analytics.dataservice.core.indexing.LocalIndexDataStore$LocalIndexDataQueue.peekNext(LocalInd
exDataStore.java:271)
        ... 7 more
Caused by: java.lang.OutOfMemoryError: Map failed
        at sun.nio.ch.FileChannelImpl.map0(Native Method)
        at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:885)
        ... 11 more

Я не уверен, почему это происходит. Пожалуйста, помогите и спасибо заранее.


person Aswin    schedule 21.04.2016    source источник


Ответы (1)


Это происходит потому, что вы используете H2, который находится в базе данных в памяти и использует файлы с отображением памяти. Мы не рекомендуем использовать H2 в производственных развертываниях.

Эта ошибка обычно возникает при отображении большого файла в памяти, например. попытка сопоставить файл размером более 1 или 2 ГБ

Вы также можете использовать опцию -d64 и -XX:MaxDirectMemorySize JVM для включения больших прямых буферов.

person Abimaran Kugathasan    schedule 21.04.2016
comment
Спасибо за помощь. Два быстрых вопроса!! 1. Пока мои данные невелики (всего 100 строк из mysql), я просто использую тестовые данные, и вышеприведенное сообщение об ошибке все еще появляется. 2. Если да, то где я могу использовать параметры -d64 и -XX:MaxDirectMemorySize в JVM? - person Aswin; 22.04.2016
comment
Вы можете добавить эти параметры JAVA в сценарий запуска DAS. - person Abimaran Kugathasan; 22.04.2016
comment
Разве значение по умолчанию -XX:MaxDirectMemorySize не является неограниченным? должны ли мы явно указать значение для него? - person Aswin; 22.04.2016