本文档是 Apache Flink 的旧版本。建议访问 最新的稳定版本

常见问题

IllegalConfigurationException

如果遇到从 TaskExecutorProcessUtils 抛出的 IllegalConfigurationException 异常,这通常说明您的配置参数中存在无效值(例如内存大小为负数、占比大于 1 等)或者配置冲突。 请根据异常信息,确认内存模型详解中与出错的内存部分对应章节的内容。

OutOfMemoryError: Java heap space

该异常说明 JVM 的堆空间过小。 可以通过增大总内存任务堆内存的方法来增大 JVM 堆空间。

提示 也可以增大框架堆内存。这是一个进阶配置,只有在确认是 Flink 框架自身需要更多内存时才应该去调整。

OutOfMemoryError: Direct buffer memory

该异常通常说明 JVM 的直接内存限制过小,或者存在直接内存泄漏(Direct Memory Leak)。 请确认用户代码及外部依赖中是否使用了 JVM 直接内存,以及如果使用了直接内存,是否配置了足够的内存空间。 可以通过调整堆外内存来增大直接内存限制。 请同时参考如何配置堆外内存)以及 Flink 设置的 JVM 参数

OutOfMemoryError: Metaspace

该异常说明 JVM Metaspace 限制过小。 可以尝试调整 JVM Metaspace 参数

IOException: Insufficient number of network buffers

该异常通常说明网络内存过小。 可以通过调整以下配置参数增大网络内存

容器(Container)内存超用

如果 TaskExecutor 容器尝试分配超过其申请大小的内存(Yarn、Mesos 或 Kubernetes),这通常说明 Flink 没有预留出足够的本地内存。 可以通过外部监控系统或者容器被部署环境杀掉时的错误信息判断是否存在容器内存超用。

如果使用了 RocksDBStateBackend 且没有开启内存控制,也可以尝试增大托管内存

此外,还可以尝试增大 JVM 开销

请参考如何配置容器内存