ActiveMQ Artemis报AMQ222010临界IO错误宕机:ARTEMIS-3084修复适用范围咨询
ActiveMQ Artemis 偶发服务停止问题咨询
初始疑问
针对ARTEMIS-3084 关联修复方案,需要明确:该修复是用于解决2.16.0版本新引入的错误,还是用于解决长期存在的历史遗留问题?
故障背景
长期部署的ActiveMQ Artemis服务会不定期出现无预警停止的情况,故障发生时采集的线程转储、服务停止日志片段如下:
09:24:10,086 WARN [org.apache.activemq.artemis.core.server] AMQ222010: Critical IO Error, shutting down the server. file=AIOSequentialFile:/home/jms-artemis/jms-broker/./data/journal/activemq-data-267599.amq, message=Timeout on close: java.io.IOException: Timeout on close at org.apache.activemq.artemis.core.io.aio.AIOSequentialFile.close(AIOSequentialFile.java:126) [artemis-journal-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.io.aio.AIOSequentialFile.close(AIOSequentialFile.java:103) [artemis-journal-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.journal.impl.JournalFilesRepository.closeFile(JournalFilesRepository.java:481) [artemis-journal-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.journal.impl.JournalImpl.moveNextFile(JournalImpl.java:3021) [artemis-journal-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.journal.impl.JournalImpl.switchFileIfNecessary(JournalImpl.java:2960) [artemis-journal-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendRecord(JournalImpl.java:2679) [artemis-journal-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.journal.impl.JournalImpl.access$200(JournalImpl.java:90) [artemis-journal-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.core.journal.impl.JournalImpl$6.run(JournalImpl.java:1063) [artemis-journal-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) [artemis-commons-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) [artemis-commons-2.4.0.jar:2.4.0] at org.apache.activemq.artemis.utils.actors.ProcessorBase$ExecutorTask.run(ProcessorBase.java:53) [artemis-commons-2.4.0.jar:2.4.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_211] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_211] at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_211] 09:24:10,101 WARN [org.apache.activemq.artemis.journal] waiting pending callbacks on activemq-data-267599.amq from 10 seconds! <...>
排查进展
- 长期以来可检索到的同类问题公开解决方案来自对应第三方技术支持帖子,给出的应对方向为:
从硬件层检查磁盘存储健康状态,从源头避免这类问题复发
- 团队完成全链路硬件排查后,已确认故障并非磁盘硬件问题导致,但始终无法定位问题根因,只能被动承受这类周期性宕机带来的业务影响。
- 近期检索到特征高度相似的公开技术讨论,其中建议将Artemis版本升级至2.17.0即可解决同类问题,但对应的关联JIRA Issue标注该问题的影响版本为2.16.0。
- 当前生产部署未配置failback,使用的Artemis版本为2.4.0;由于版本跨度过大,非核心代码维护人员很难通过比对代码差异定位问题关联点。
核心待解疑问
- 2.17.0版本中对应关联JIRA的修复逻辑,是仅解决2.16.0版本新引入的同类问题,还是针对潜伏了多个版本的长期历史问题的修复?
- 从当前2.4.0版本直接升级到2.17.0版本,是否可以彻底解决当前遇到的偶发服务宕机问题?
内容的提问来源于stack exchange,提问作者recvfrom_ro
相关产品推荐
相关产品推荐

