IllegalConfigurationException
如果您看到从TaskExecutorProcessUtils或JobManagerProcessUtils抛出IllegalConfigurationException,则通常表明存在无效的配置值(例如,负的内存大小,大于1的分数等)或配置冲突。检查与异常消息中提到的内存组件相关的文档章节或 配置选项。
OutOfMemoryError:Java heap space
异常通常表明JVM堆太小。您可以尝试通过增加总内存来增加JVM堆大小。您也可以直接增加 TaskManager的任务堆内存或JobManager的 JVM堆内存。
注意您还可以增加 TaskManager的框架堆内存,但是只有在确定Flink框架本身需要更多内存的情况下,才应更改此选项,这个选型一般不会出现问题,除非调用类比较多。
OutOfMemoryError:Direct buffer memory
异常通常表明JVM直接内存限制太小或存在直接内存泄漏。检查用户代码或其他外部依赖项是否使用了JVM直接内存,并且已正确解决了该问题。您可以尝试通过调整直接堆外内存来增加其限制。另请参阅如何为Flink设置的TaskManagers, JobManagers和JVM参数配置堆外内存。
OutOfMemoryError:Metaspace
该异常通常表明JVM元空间限制配置得太小。您可以尝试加大对JVM元空间选项TaskManagers 或JobManagers。
IOException:Insufficient number of network buffers
这仅与TaskManager有关。
异常通常表明配置的网络内存 大小不足。您可以尝试通过调整以下选项来增加网络内存:
Container Memory Exceeded
如果Flink容器尝试分配超出其请求大小(Yarn,Mesos或Kubernetes)的内存,则通常表明Flink没有预留足够的本机内存。当容器被部署环境杀死时,您可以通过使用外部监视系统或从错误消息中观察到此情况。
如果在JobManager进程中遇到此问题,您还可以通过设置选项排除可能的JVM Direct Memory泄漏来启用JVM Direct Memory限制 。jobmanager.memory.enable-jvm-direct-memory-limit
如果使用RocksDBStateBackend,并且禁用了内存控制,则可以尝试增加TaskManager的托管内存。
或者,您可以增加JVM Overhead。
参考来源: