You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot+Apache Camel Saga引发Narayana LRA内存泄漏排查

问题分析:Narayana LRA协调器OOM根源判定
  • 核心现象:批量执行10万次成功Saga事务后,Narayana LRA协调器因java.lang.OutOfMemoryError: Java heap space重启,Flight Recorder定位到io.narayana.lra.coordinator.domain.service.LRAService中的participants(ConcurrentHashMap)未清理元素。

  • 责任归属判定:

    1. 排除Apache Camel Saga Bug:Camel Saga作为LRA的客户端,仅负责发起LRA、注册参与者、触发完成/补偿动作,不参与LRA协调器内部的参与者状态存储与清理逻辑。只要Camel正确调用了LRA的完成API,后续的清理就该由协调器处理。
    2. 排除配置错误:Narayana LRA默认会在LRA完成后清理参与者记录,若未配置特殊的持久化或保留策略,单纯的批量成功事务不应导致内存泄漏。除非手动开启了不合理的日志/调试保留配置,但用户未提及此类操作,大概率不是配置问题。
    3. 指向Narayana自身Bug:LRAService中的participants用于跟踪活跃的LRA参与者,正常流程下,当LRA进入完成状态(所有参与者确认完成),协调器必须从该Map中移除对应的条目。大量成功事务后条目未清理,说明Narayana LRA的生命周期管理逻辑存在缺陷——可能是完成事件的监听处理遗漏、事务状态更新后的清理动作未触发,或是并发场景下的清理逻辑丢失。
  • 验证方向:可以尝试单步执行少量Saga事务,检查每笔事务完成后participants的大小是否递减;若单步正常但批量异常,大概率是并发场景下的清理逻辑竞态问题。

内容的提问来源于stack exchange,提问作者user3078393

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:17:32