【問題描述】
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沒有再出現程序退出和記憶體配置設定失敗的異常。