海豚调度异常处理: 使用 arthas 在内存中删除启动失败的工作流

💡 本系列文章是 DolphinScheduler 由浅入深的教程,涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。祝开卷有益。
大数据学习指南

大家好,我是小陶,DolphinScheduler 运行过程中会出现一些不可控的异常,可以使用 Arthas 轻松处理 JVM 中的对象,不需要重启服务。

Arthas 简单介绍

熟悉 arthas 的可以直接跳过,使用 artlas https://arthas.aliyun.com/
image.png

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

使用 arthas 操作内存对象

这里主要用到了 vmtool + ognl 。

Master服务一直在打印错误日志,如果不处理,会给磁盘压力…
image.png
查看源码发现,需要处理下图这里的 startProcessFailedMap,否则会一直重试。
截屏2023-07-03 17.04.52 (1).png

下面是使用 arthas 操作 JVM 的步骤:

①启动 arthas

java -jar arthas-boot.jar
image.png
输入序号,选择Master对应的进程,这里输入 2

② 查看 startProcessFailedMap 对象

查看 startProcessFailedMap,这里用到了 vmtool 这个命令

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]中的数字 ID 去 MYSQL 搜一下是哪些工作流,再判断能否直接从内存中删除。

③ 删除失败的工作流

如果可以删除,继续操作,这里用到了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'

此时,再查看

vmtool --action getInstances --className org.apache.dolphinscheduler.server.master.runner.MasterExecService --express 'instances[0].startProcessFailedMap'

输出:@ConcurrentHashMap[isEmpty=true;size=0]

错误日志没有了!

④ 数据库状态修改

最后,把数据库中这俩工作流的状态置为成功。(也就是无需处理。)

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


大数据学习指南
专注于大数据技术分享与交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/27499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

明天二战六级

明天二战六级,各位程序员们,加油

八股文系列Spark

为什么Spark 比 MapReduce 更快 DAG相比hadoop的mapreduce在大多数情况下可以减少磁盘I/O次数 mapreduce通常需要将计算的中间结果写入磁盘,然后还要再读取磁盘,从而导致了频繁的磁盘IO。 spark通常不需要将计算的中间结果写入磁盘,只有shuf…

【C++ | const成员】一文了解类的 const数据成员、const成员函数、const对象、mutable 数据成员

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-06-14 2…

新一代大核卷积反超ViT和ConvNet!同参数量下性能、精度、速度完胜

大核卷积网络是CNN的一种变体,也是深度学习领域的一种重要技术,它使用较大的卷积核来处理图像数据,以提高模型对视觉信息的理解和处理能力。 这种类型的网络能够捕捉到更多的空间信息,因为它的大步长和大感受野可以一次性覆盖图像…

C++语法08 数据类型之间的强制转换

目录 强制类型转换 强制类型转换格式 整型转换成浮点型 整型转换成浮点型其他写法 训练:糖果奖励 糖果奖励参考代码 浮点型转换成整型 浮点型转换成整型其他写法 训练:分离小数 分离小数参考代码 强制类型转换 强制类型转换,就是把…

如何应对生活中的不确定性:仁者安仁,知者利仁。

有较高自尊水平的人,接近于孔子说的:仁者。 ——— 有着稳定的高自尊,无论外在环境如何变化,对其影响都不大,他能够愉快地生活。 相反:一个人处于低自尊状态,就会活得很痛苦,对自己…

基于MCU平台的HMI开发的性能优化与实战(上)

随着汽车座舱智能化的不断演进,车内显示设备的数量显著增加,从传统的仪表盘和中控屏扩展至空调控制、扶手、副驾驶区域以及抬头显示(HUD)等多样化的显示单元。为了有效支持这些功能单元,同时控制整车成本,越…

手机在网状态-手机在网状态查询-手机在网站状态接口

查询手机号在网状态,返回正常使用、停机、未启用/在网但不可用、不在网(销号/未启用/异常)、预销户等多种状态 直连三大运营商,实时更新,可查询实时在网状态 高准确率-实时更新,准确率99.99% 接口地址&…

54.Python-web框架-Django-免费模板django-datta-able

1.Datta Able Django介绍 Detta Able Djiango是什么 Datta Able Django 是一个由AppSeed提供的开源Django管理面板,基于现代设计,为开发者提供了一流的功能和优雅的界面。它源自CodedThemes的高风格化Bootstrap 4模板——Datta Able Bootstrap Lite&…

python-基础篇-文件和异常

文章目录 文件和异常读写文本文件读写二进制文件读写JSON文件 文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于文件系统的知识&#…

什么是快乐?

什么是快乐? What is Happiness? 1. 快乐不是追求外在的物质,而是内心的平静与满足。当我们学会感恩,懂得珍惜眼前的一切,心中自然会充满喜悦。快乐并非来自拥有更多,而是感受到已经拥有的足够。每一天都怀抱感激之情…

qt如何在linux平台上设置编译生成windows程序文件,跨平台?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「qt的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!QT本来目标就是跨平台&#xf…

Commons-Collections篇-CC4链分析

前言 因为 CommonsCollections4 除 4.0 的其他版本去掉了 InvokerTransformer 继承 Serializable,导致该方法无法序列化。 同时 CommonsCollections 4的版本 TransformingComparator 继承了 Serializable接口,而CommonsCollections 3里是没有的&#xf…

hrm人力管理系统源码(从招聘到薪酬的全过程人力管控系统)

一、项目介绍 一款全源码可二开,可基于云部署、私有部署的企业级数字化人力资源管理系统,涵盖了招聘、人事、考勤、绩效、社保、酬薪六大模块,解决了从人事招聘到酬薪计算的全周期人力资源管理,符合当下大中小型企业组织架构管理运…

Stringboot

一、概述 springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起&…

django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.33).

django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.33). 一、原因分析 在新版的Django默认需要MySQL 8或更高版本,才能运行。 二、解决办法 1、升级mysql数据库版本 只需要将mysql版本升级到8.0,即可解决,当然这…

基于esp8266_点灯blinker_智能家居

文章目录 一 实现思路1 项目简介2 项目构成3 代码实现4 外壳部分 二 效果展示UI图片 一 实现思路 摘要:esp8266,mixly,点灯blinker,物联网,智能家居,3donecut 1 项目简介 1 项目效果 通过手机blinker app…

宝藏速成秘籍(3)选择排序法

一、前言 1.1、概念 选择排序法(Selection Sort)是一种简单直观的排序算法。它的基本思想是:每次从待排序的数组中选择最小(或最大)的元素,将其放在已排序部分的末尾,直到所有元素都排序完毕。…

Unet心电信号分割方法(Pytorch)

心血管疾病是一种常见病,严重影响人们的健康及日常生活。 近年来随着人们生活习惯的不断变化,心血管疾病对人们影响愈加明显,发病率呈现出逐年攀升的趋势,心血管疾病是中国城乡居民死亡的首要原因。心电图ECG已被广泛用于研究心跳…

光学雨量监测站:科技赋能,精准监测降水过程

TH-YJ3随着科技的不断进步,光学雨量监测站作为一种先进的降水监测设备,正逐渐在气象、水文、农业等领域发挥重要作用。光学雨量监测站以其高精度、高可靠性、实时性强的特点,为降水数据的收集和分析提供了强有力的支持,为相关领域…