做導(dǎo)航網(wǎng)站電腦設(shè)備seo可以從哪些方面優(yōu)化
💡 本系列文章是 DolphinScheduler 由淺入深的教程,涵蓋搭建、二開(kāi)迭代、核心原理解讀、運(yùn)維和管理等一系列內(nèi)容。適用于想對(duì) DolphinScheduler了解或想要加深理解的讀者。祝開(kāi)卷有益。
大數(shù)據(jù)學(xué)習(xí)指南
大家好,我是小陶,DolphinScheduler 運(yùn)行過(guò)程中會(huì)出現(xiàn)一些不可控的異常,可以使用 Arthas 輕松處理 JVM 中的對(duì)象,不需要重啟服務(wù)。
Arthas 簡(jiǎn)單介紹
熟悉 arthas 的可以直接跳過(guò),使用 artlas https://arthas.aliyun.com/
Arthas 是一款線上監(jiān)控診斷產(chǎn)品,通過(guò)全局視角實(shí)時(shí)查看應(yīng)用 load、內(nèi)存、gc、線程的狀態(tài)信息,并能在不修改應(yīng)用代碼的情況下,對(duì)業(yè)務(wù)問(wèn)題進(jìn)行診斷,包括查看方法調(diào)用的出入?yún)ⅰ惓?#xff0c;監(jiān)測(cè)方法執(zhí)行耗時(shí),類加載信息等,大大提升線上問(wèn)題排查效率。
使用 arthas 操作內(nèi)存對(duì)象
這里主要用到了 vmtool + ognl 。
Master服務(wù)一直在打印錯(cuò)誤日志,如果不處理,會(huì)給磁盤壓力…
查看源碼發(fā)現(xiàn),需要處理下圖這里的 startProcessFailedMap,否則會(huì)一直重試。
下面是使用 arthas 操作 JVM 的步驟:
①啟動(dòng) arthas
java -jar arthas-boot.jar
輸入序號(hào),選擇Master對(duì)應(yīng)的進(jìn)程,這里輸入 2
② 查看 startProcessFailedMap 對(duì)象
查看 startProcessFailedMap,這里用到了 vmtool 這個(gè)命令
vmtool --action getInstances --className org.apache.dolphinscheduler.server.master.runner.MasterExecService --express 'instances[0].startProcessFailedMap'
輸出:
@ConcurrentHashMap[
@Integer[837919]:@WorkflowExecuteThread[org.apache.dolphinscheduler.server.master.runner.WorkflowExecuteThread@14a071bc],
@Integer[938003]:@WorkflowExecuteThread[org.apache.dolphinscheduler.server.master.runner.WorkflowExecuteThread@14140a49],
]
拿著@Integer[837919]和@Integer[938003]中的數(shù)字 ID 去 MYSQL 搜一下是哪些工作流,再判斷能否直接從內(nèi)存中刪除。
③ 刪除失敗的工作流
如果可以刪除,繼續(xù)操作,這里用到了ognl,想要了解更多的小伙伴可以看文末的參考文章。
vmtool --action getInstances --className org.apache.dolphinscheduler.server.master.runner.MasterSchedulerService --express '#map=instances[0].startProcessFailedMap,#map.remove(837919),#map'vmtool --action getInstances --className org.apache.dolphinscheduler.server.master.runner.MasterSchedulerService --express '#map=instances[0].startProcessFailedMap,#map.remove(938003),#map'
此時(shí),再查看
vmtool --action getInstances --className org.apache.dolphinscheduler.server.master.runner.MasterExecService --express 'instances[0].startProcessFailedMap'
輸出:@ConcurrentHashMap[isEmpty=true;size=0]
錯(cuò)誤日志沒(méi)有了!
④ 數(shù)據(jù)庫(kù)狀態(tài)修改
最后,把數(shù)據(jù)庫(kù)中這倆工作流的狀態(tài)置為成功。(也就是無(wú)需處理。)
UPDATE t_ds_process_instance set state = 7 where id = xxxx
最后可以了。
Arthas 使用參考
https://www.cnblogs.com/qlqwjy/p/14269457.html
https://github.com/alibaba/arthas/issues/71
大數(shù)據(jù)學(xué)習(xí)指南
專注于大數(shù)據(jù)技術(shù)分享與交流。