WSO2 DAS - 索引数据 peekNext 错误:映射失败

WSO2 DAS - Error in index data peekNext: Map failed

我的场景,

我在 Mysql 数据库中有一些交易细节。我使用 WSO2 ESB 服务器并将这些数据推送到 WSO2 DAS 服务器(使用主键和索引将数据保存在 H2 DB 中)。数据已成功加载到 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.access0(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

我不确定为什么会这样。请帮助并提前致谢。

发生这种情况是因为您正在使用 H2,它是内存数据库并使用内存映射文件。我们不建议在生产部署中使用 H2。

这个错误通常发生在映射内存中的大文件时,例如尝试映射大于 1 或 2GB 的文件

您还可以使用 -d64-XX:MaxDirectMemorySize JVM 选项来启用大型直接缓冲区