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 选项来启用大型直接缓冲区
我的场景,
我在 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 选项来启用大型直接缓冲区