前言:
如今我们对“内存分配失败是什么意思”大体比较讲究,看官们都需要知道一些“内存分配失败是什么意思”的相关文章。那么小编同时在网上汇集了一些有关“内存分配失败是什么意思””的相关资讯,希望兄弟们能喜欢,朋友们快快来学习一下吧!【问题描述】
DolphinScheduler在生产正式使用后,经常出现master-server或者worker-server进程退出,在“监控中心”可以查看存活的master或者worker;
查看worker:
并且在gc日志中出现内存分配失败GC (Allocation Failure)
日志目录是:/logs/gc.log
【解决办法】
通过查阅官方文档,发现两个很有用的配置,master.exec.threads和worker.exec.threads;
配置master.properties,我这里配置为5,意思是一个master最对运行5个流程实例;
配置worker.properties,我这里设置为10,意思是一个worker,最多运行10个任务实例;
配置好后,已启动未运行的任务实例可以这样查看:
可以选择“运行中”查看运行状态的任务实例;我有两个worker,理论上就是最多20个正在运行的任务实例,可以我数了之后,发现不止20个;后面查阅资料得知,“任务依赖”的任务实例,不占用运行实例名额,原因是“任务依赖”的任务实例不占用资源;
去除“任务依赖”的任务实例后,果然是20个正着运行的任务。
【总结】
这是两个非常有用的参数,通过控制并发的任务和流程,从而控制同一时间需要的资源,避免任务一下全部拉起来,导致资源耗尽使进程退出;
设置了并发后,等于是把资源使用的峰值给抹平了,master-server和worker-server没有再出现进程退出和内存分配失败的异常。
标签: #内存分配失败是什么意思