文档首页/ MapReduce服务 MRS/ 故障排除/ 使用Flink/ Flink任务运行过程中出现报错“netty.exception.RemoteTransportException”
更新时间:2025-09-17 GMT+08:00

Flink任务运行过程中出现报错“netty.exception.RemoteTransportException”

问题现象

Flink任务运行过程中出现报错:netty.exception.RemoteTransportException。

原因分析

  • 可能原因一
    业务出现堆内存级别的Full GC。
    1. 根据以上日志截图反馈的报错,可以找到故障的taskmanager所在节点。
    2. 查看节点的后面的GC日志是否出现大量的Full GC或者GC时间过长的现象。如下图:每次GC时间都在10s以上。

      注意:taskmanager启动过程中前几次均会出现Full GC属于正常显现。运行过程中Full GC间隔较长并且每次Full GC时间很短也视为正常。如下:间隔时间为小时级别,每次时间不超过1s。

  • 可能原因二

    业务侧出现线程级别的内存泄漏“ java.lang.OutOfMemoryError: unable to create new native thread”。

    1. 根据异常任务的日志,可以找到故障的taskmanager所在节点。
    2. 从异常的taskmanager节点的日志中能够看到“unable to create new native thread”类型的报错。
    3. 该报错说明,异常的taskmanager节点无法创建新的线程,导致当前节点taskmanager节点阻塞。
  • 可能原因三
    nodemanager节点硬件故障。
    1. 根据异常任务的日志,可以找到故障的taskmanager所在节点。
    2. 在taskmanager日志中没有找到任何异常信息
    3. 收集taskmanager所在的nodemanager节点的OS日志发现出现大量磁盘异常

    4. 观察nodemanager进程的yarn-start-stop.log是否有重启动作。

    除以上报错外,nodemanager节点的磁盘如果写满也会使nodemanager进程重启,并且使container全部失败。此时,Flink任务也会失败。

处理步骤

  • 原因一解决方案:
    1. 业务侧调大整taskmanager的启动内存。
    2. 若业务侧存在反压,则增大业务的整体并发,消除反压。

    若以上都不存在,请业务侧排查代码中是否存在内存泄漏。建议业务可以将自动重启机制开启。如在“flink-conf.xml”中将配置“restart-strategy:”设置为“failure-rate”。

  • 原因二解决方案:
    1. 查看是否节点存在os配置不合理的情况。
    2. 根据“判断Flink任务是否存在线程泄漏”的方法,判定是否有内存泄漏的风险。(用jstack去判断)
  • 原因三解决方案:
    1. 修复磁盘故障。
    2. 建议业务可以将自动重启机制开启。如在“flink-conf.xml”中将配置“restart-strategy:”设置为“failure-rate”。