我在创建新地图文件时遇到问题。它引发一个io异常并重试30次,但都以io异常失败。但我发现mapfile确实是在磁盘上创建的succ文件,并且它的文件大小是正确的。
你能帮我吗?
下面是异常堆栈。
2018-10-09 01:14:50 WARN ReputMessageService - [BUG]put commit log position info to BenchmarkTest:304 265047020213 failed, retry 2 times 2018-10-09 01:14:51 ERROR ReputMessageService - map file /data/services/rocketmq-all-4.2.0/data/store/consumequeue/BenchmarkTest/304/00000000000040200000 Failed. java.io.IOException: Map failed at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:940) ~[na:1.8.0_121] at org.apache.rocketmq.store.MappedFile.init(MappedFile.java:164) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.MappedFile.(MappedFile.java:73) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.MappedFileQueue.getLastMappedFile(MappedFileQueue.java:217) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.MappedFileQueue.getLastMappedFile(MappedFileQueue.java:237) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.ConsumeQueue.putMessagePositionInfo(ConsumeQueue.java:435) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.ConsumeQueue.putMessagePositionInfoWrapper(ConsumeQueue.java:397) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.DefaultMessageStore.putMessagePositionInfo(DefaultMessageStore.java:1371) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.DefaultMessageStore$CommitLogDispatcherBuildConsumeQueue.dispatch(DefaultMessageStore.java:1418) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.DefaultMessageStore.doDispatch(DefaultMessageStore.java:1365) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.DefaultMessageStore$ReputMessageService.doReput(DefaultMessageStore.java:1763) [rocketmq-store-4.2.0.jar:4.2.0] at org.apache.rocketmq.store.DefaultMessageStore$ReputMessageService.run(DefaultMessageStore.java:1818) [rocketmq-store-4.2.0.jar:4.2.0] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] Caused by: java.lang.OutOfMemoryError: Map failed at sun.nio.ch.FileChannelImpl.map0(Native Method) ~[na:1.8.0_121] at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:937) ~[na:1.8.0_121] ... 12 common frames omitted
原提问者GitHub用户yujun777
将文件映射到内存时似乎发生了OutOfMemoryError,而且您的环境中似乎正在运行一个基准案例,因此请在64位服务器中运行rocketmq,检查映射的文件是否达到了服务器设置的限制,例如file max或max_map_count(cat/proc/sys/vm/max_map_count),并检查您的runbroker.sh JVM配置。 如果你对此一无所知,你可以搜索这些词:“FileChannelImpl java.lang.OutOfMemoryError:映射失败”。
原回答者GitHub用户duhengforever
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。