最近生产频繁遇到flink的tm挂掉的情况,查看了日志发现如下内存使用情况
可见出现峰值,触发了系统的oom-killer程序,通过查看下系统日志 /var/log/messages
确认了的确触发的系统oom-killer
[ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
[21862] 978 21862 2103161 249370 733 0 0 java
[12678] 0 12623 2036524 667896 1618 0 0 java
Out of memory: Kill process 12678 (java) score 159 or sacrifice child
后面查看内存使用突增的原因是因为增加了几个定时任务,导致内存使用超过系统限制,触发了oom-killer,而它又是挑个最大使用的程序进行删除,所以部署到tm就被误杀了。
这里flink集群是使用standalone的搭建的,所以使用supervisor来监控拉起被误杀的tm,配置如下
[program:flink_taskmanager]
environment = JAVA_HOME="/opt/jdk1.8.0_102"
directory=/opt/flink-1.9.1/bin ; 项目路劲
comma