|
各位社区伙伴大家好 首先描述一下我的问题:最近我们发现有几个任务平时运行将近一个月都没发生问题,最近在进行checkpoint的时候经常失败,然后一直容错恢复重启,我们通过日志查看,发现某个TM在进行checkpoint的时候内存使用过大导致内存不够被Kill掉了; 报错日志:
java.lang.Exception: Container [pid=24859,containerID=container_e01_1618927404581_0181_01_002010] is running beyond physical memor y limits. Current usage: 4.0 GB of 4 GB physical memory used; 6.9 GB of 8.4 GB virtual memory used. Killing container.
但是我们从他历史的checkpoint记录中可以看到它发生问题那次checkpoint时候并不是进行全量checkpoint的时候(很抱歉当时失败的时候忘记截图,给任务重启了,现在这幅图是任务重启之后的历史checkpoint截图,);
我们为了减少增量checkpoint的大小设置了State DDL,但是这种任务还是发生了TM内存不够被KIll掉的问题,我们现在的解决途径是增大内存,或者并发,但是我们现在任务已经配置了64个并发,每个TM内存给了4G,如果不断增加并发或者内存的话会对资源有很大的浪费,因为我们可以看到平时堆内存的使用率是有限的,所以一味增加会造成很大的资源浪费。
综上。想问一下社区的伙伴有没有遇到类似checkpoint时候某个TM内存不够被Kill的问题,除了不断增加并发内存外,有没有好的解决方案,谢谢大家。
Best, Jason Lee
|
Jason Lee
|
jasonlee1781@...
|
|