DolphinScheduler运维-页面加载缓慢

一、问题描述

DolphinScheduler调度平台的UI界面加载缓慢,项目中的任务实例加载时间过长,需要解决这个问题,提高DolphinScheduler平台UI页面的加载速度。


二、原因分析

经过分析发现,任务实例过多是导致UI加载缓慢的主要原因。由于任务实例无法直接删除,根据文档了解到需要删除相应的工作流实例。删除工作流实例后,相关的任务实例和日志会自动被删除。然而,手动删除工作流实例耗时较长,因此不是一个有效的解决方案。为了提高效率,可以利用DolphinScheduler提供的API接口来实现删除操作,然后在DolphinScheduler平台上设置一个定时任务,定期清理工作流实例。可以编写Shell脚本或Python脚本来实现清理逻辑。

根据DolphinScheduler的API文档,进程实例(Process Instance)对应着UI页面中的工作流实例。因此,通过定时清理过期的进程实例,可以有效优化DolphinScheduler平台的UI加载速度。


三、解决方案

1. 设置API访问令牌

创建令牌步骤如下:

在这里插入图片描述

2. 逻辑分析

2.1 查找用于删除的API

查看DolphinScheduler的API文档,文档地址:http://localhost:12345/dolphinscheduler/swagger-ui/index.html。
找到进程实例相关操作的API,可以看到有两个进行删除操作的API,选择批量删除的接口/dolphinscheduler/projects/{projectCode}/process-instances/batch-delete来执行删除操作。
需要两个参数。

  • processInstanceIds:进程实例id的数组,用逗号分隔
  • projectCode:项目代码

在这里插入图片描述

2.2 获取进程实例id的数组

可以从/dolphinscheduler/projects/{projectCode}/process-instances接口获取进程实例的相关信息。
需要三个参数。

  • pageNo:当前页
  • pageSize:每页多少条数据
  • projectCode:项目代码
    在这里插入图片描述

2.3 获取项目代码

找到项目相关操作的API,可以使用/dolphinscheduler/projects/list获取所有项目的一个列表信息,可以根据其中的项目名获得项目代码。

3. 代码实现

此代码将会清理所有项目4个月前1号到3个月前1号的工作流实例。

3.1 shell代码实现

#!/bin/bash

# 认证令牌
token='5c7437968f5d4492dc694902d6e6847f'
# 链接
url='http://localhost:12345/dolphinscheduler'
# 每页多少条
page_size=10

# 三个月前日期时间
three_month_ago_datetime=$(date -d "-3 months" '+%Y-%m-01')
# 四个月前日期时间
four_month_ago_datetime=$(date -d "-4 months" '+%Y-%m-01')

# 获取所有项目名称
project_names=($(curl -X GET -H "token: ${token}" "${url}/projects/list" | jq -r '.data[] | "\(.name)"'))

# 循环获取项目名
for project_name in "${project_names[@]}"
do
  echo "************************** 项目名: ${project_name} **************************"
  # 根据项目名获取项目代码
  project_code=$(curl -X GET -H "token: ${token}"

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

集成学习 | 集成学习思想:Boosting

目录 一. Boosting思想1. Adaboost 算法1.1 Adaboost算法构建流程1.2 sklearn库参数说明 2. Gradient Boosting 算法2.1 Gradient Boosting算法构建流程2.2 Gradient Boosting算法的回归与分类问题2.2.1 Gradient Boosting回归算法均方差损失函数绝对误差损失函数 2.2.2 Gradie…

SpringMVC结合设计模式:解决MyBatisPlus传递嵌套JSON数据的难题

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

有道翻译实现接口加密解密

文章目录 目标简单逆向分析源码深度逆向分析参考文献目标 实现对网易有道 sign 等参数的加密 及 返回的密文数据解密实现 简单逆向分析 首先在右上角提前登录好账号信息。 输入中文:你好 要求翻译成:英文 全局搜索:你好 或 hello,结果没有发现什么。 切换 Fetch/XHR …

QML ShapePath绘制虚线

一.qml PathLine介绍 在 QML(Qt Modeling Language)中,PathLine 是 Path 元素的一个子类型,用于创建两点之间的直线段。Path 类型用于描述一个二维路径,可以用来绘制形状、曲线和直线。PathLine 是所有路径曲线中最简单…

Day60:WEB攻防-PHP反序列化POP链构造魔术方法流程漏洞触发条件属性修改

目录 PHP-DEMO1-序列化和反序列化 序列化操作 - 即类型转换 序列化案例 PHP-DEMO2-魔术方法触发规则 __construct(): //当对象new的时候会自动调用 __destruct()://当对象被销毁时会被自动调用 __sleep(): //serialize()执行时被自动调用 __wakeup(): //uns…

高中信息技术教资刷题笔记_选择题篇

1.信息技术基础 位与字节的换算 模2除法运算 网页保存 进制之间的计算 教你快速学会二进制、十进制、十六进制之间的转换 - 知乎 (zhihu.com) 原码、补码、反码计算 物联网技术 位运算 按位与:同位置为1,则为1,其他都是0按位或:有…

2024年产品品牌化深度分析:消费者心理与品牌化、产品质量的权衡

随着市场竞争的加剧和消费者需求的多样化,产品品牌化已经成为企业不可或缺的战略选择。在2024年,当消费者面对众多商品时,品牌化与产品质量之间的权衡成为了消费者决策的重要因素。那么,在消费者心理中,品牌化重要还是…

Docker 之 数据卷

目录 1. 数据卷是什么 1.1 运行一个带有容器卷存储功能的容器实例 2.能干什么 3. 容器卷案例 3.1 宿主机vs容器之间映射添加容器卷 3.1.1 命令添加: 3.1.2 查看数据卷是否挂载成功 3.1.3 容器和宿主机之间数据共享 3.2 读写规则映射添加说明 3.2.1 读写&…

详解:JS异步解决方案之回调函数,及其弊端

「异步编程」是前端工程师日常开发中经常会用到的技术,异步的实现有好几种方式,各有利弊,本篇先讲通过回调来实现来异步 。 一、同步和异步 同步编程和异步编程是两种不同的编程方式。 同步编程是指按照代码的顺序执行,每一行代…

前端小卡片:vue3路由是什么,有什么作用,该如何配置?

在 Vue 3 中,路由的处理使用了 Vue Router,它是官方提供的路由管理器。Vue Router 用于实现单页应用中的路由功能,通过将不同的 URL 映射到对应的组件,实现页面之间的切换和导航。 Vue Router 的作用包括: 实现页面之…

Python并发编程:线程和多线程的使用

前面的文章,我们讲了什么Python的许多基础知识,现在我们开始对Python并发编程进行学习。我们将探讨 Python 中线程和多线程的使用。帮助大家更好地理解如何使用这种技术。 目录 1. 线程(Threads) 1.1 Python 中的线程工作原理 …

《妈妈是什么》笔记(五) 一切负面经验都必须转化为正面角度

经典摘录 我的引导原则是,一切负面经验都必须转化为正面角度。我们不能选择孩子的经历,但是可以帮助孩子选择如何看待这些事情,以及如何积极地利用这些事情,锤炼自己的社会交往能力。 比如, 别人(老师、同…

正则表达式具体用法大全~持续更新

# 正则表达式: ## 单字符匹配: python # 匹配某个字符串: # text "abc" # ret re.match(b,text) # print(ret.group()) # 点(.):匹配任意的字符(除了\n): # text "\nabc&quo…

Navicat 干货 | 探索 PostgreSQL 的外部数据包装器和统计函数

PostgreSQL 因其稳定性和可扩展性而广受青睐,为开发人员和数据管理员提供了许多有用的函数。在这些函数中,file_fdw_handler、file_fdw_validator、pg_stat_statements、pg_stat_statements_info 以及 pg_stat_statements_reset 是其中的重要函数&#x…

记一次由于buff/cache导致服务器内存爆满的问题

目录 前言 复现 登录服务器查看占用内存进程排行 先了解一下什么是buff/cache? 尝试释放buffer/cache /proc/sys/vm/drop_caches dirty_ratio dirty_background_ratio dirty_writeback_centisecs dirty_expire_centisecs drop_caches page-cluster swap…

2024年计算机三级|数据库习题整理(自用④)

所有题目均来自【三级数据库技术基础题库】,此博客仅为知识点的补充,用于自主的回顾学习,仅供参考。 选择题 知识点:数据库文件 透明性分级: ①分片透明性 > ②位置透明性 > ③局部数据模型透明性 数据仓库数据…

vector类详解及重要函数实现

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 今日主菜:vector类 主厨:邪王真眼 所属专栏:c专栏 主厨的主页:Chef‘s blog 坚持下去,成功不是目的&a…

阿里二面:谈谈ThreadLocal的内存泄漏问题?问麻了。。。。

引言 ThreadLocal在Java多线程编程中扮演着重要的角色,它提供了一种线程局部存储机制,允许每个线程拥有独立的变量副本,从而有效地避免了线程间的数据共享冲突。ThreadLocal的主要用途在于,当需要为每个线程维护一个独立的上下文…

基于Python3的数据结构与算法 - 20 AVL的旋转

一、二叉搜索树的效率 平均情况下,二叉搜索树进行搜索的时间复杂度为O(lgn)。最坏情况下,二叉搜索树可能非常偏斜。(如下图所示)解决方法: 随机化插入AVL树 二、AVL树 AVL树是一棵自平衡的二叉树AVL树具有以下性质&…

自动驾驶感知新范式——BEV感知经典论文总结和对比(一)

自动驾驶感知新范式——BEV感知经典论文总结和对比(一) 博主之前的博客大多围绕自动驾驶视觉感知中的视觉深度估计(depth estimation)展开,包括单目针孔、单目鱼眼、环视针孔、环视鱼眼等,目标是只依赖于视…