线上异步任务突然不能回写100%

项目场景:

       需求是一个作业,需要运行一组sql,所有sql运行完成,更新作业进度为100%,状态为完成。sql需要是在大数据平台,通过yarn调度,异步执行。 kafka监听每个sql的执行状态,所有sql执行完成,更新作业进度和状态。系统运行一段时间之后,突然频繁出现作业进度不能更新到100%。

       这个系统部署了多个项目现场,稳定运行多年。出问题的这个项目也已经运行2年,突然出现了问题。同时运行10个作业,每个作业有50多个sql,有些作业可以回写状态100%,有些不能。任务不能正确回写到进度100%,比较随机。

  目前的实现 方案:有一个任务表rwxx(id,zt.......),  一个字表rwxx_xq(id,rw_id,sql_id,sql,zt,.....),  rwxx_xq表记录每个sql以及sql的状态。每个sql执行完成之后,会回写更新rwxx_xq的zt信息。统计rwxx_xq表这个rw_id状态都是完成状态,更新rwxx状态为完成,进度为100%


原因分析:

1、怀疑项目现场环境

功能稳定运行了2年多,突然出问题,第一反应是不是项目现场环境问题,如磁盘空间不足,服务器内存不够,mysql服务器空间等等问题。排除一圈,发现现场环境稳定,平台别的功能正常,就我们子平台异常。

2、怀疑sql没有执行完成

     子平台服务器、mysql等服务器排除之后,想着任务都会提交到yarn执行。所以去yarn上,查询这个任务对应的多个子sql,是不是任务运行完成。  结果那作业id,去yarn上查询,发现任务下面的sql都已经执行完成。

3、怀疑kafka消息没有发送或者没有接收

     sql都执行完成了,但是rwxx_xq表没有更新状态。怀疑是不是执行完成之后,大数据平台没有成功给子平台发送kafka消息,或者发送了kafka消息,子平台没有接收到。

    通过查询kafka,发现大数据平台正常发送了kafka消息,通过查询自己的日志,发现确实收到了kafka消息。

4、日志分析,代码分析

  通过以上3步,基本判断环境没什么问题。就只能再审查相关的代码。说实话,因为多个项目正常运行多年的滤镜,是一点也不觉得代码有问题。

  1、去线上服务器,down下了最近2天的运行日志,因为是kafka异步消息,当时做需求的时候,出于谨慎,收到消息都会打印日志。每运行一步,可能出错的地方都打印了日志。 因为是多服务器,运行又是多线程,看日志也非常复杂。

 2、 通过日志,发现没更新rwxx_xq表的原因,居然是通过sql_id、和rw_id居然没在rwxx_xq表找到数据,所以跳过,没往下更新状态。

问题虽然定位到了,但是就很诡异,因为在rwxx_xq表有记录。然后就想着,难道是mysql部署了多台,数据不同步??

  结果现场就一台mysql服务器。

问题又陷入困顿,不知道问题在哪里了。  求助组内同学,大家一起头脑风暴。有个同事说,现在实现方案是

1、目前是先组装sql数据,提交任务给大数据平台执行。 大数据有定时任务,10秒去redis拉sql执行。

  2、把sql任务写rwxx_xq表。

  3、监听kafka,回写更新rwxx_xq表

他说怀疑是提交大数据平台,sql很快执行成功,rwxx_xq表还有没写数据,导致了问题。顺着他的思路,比对了rwxx_xq表数据创建时间和kafka消息回写时间,确实是这个问题。

分析问题根因:

   正常情况步骤1调接口成功之后,至少10秒+sql执行的时间,可能是20秒左右,数据才会开始回写。如果sql任务写到rwxx_xq表时间小于20秒,都不会出现问题。

   但是项目现场运行多年,rwxx_xq累积到百万数据。往rwxx_xq一条条插入数据,50个数据,居然花了60秒。所以就导致了这个问题。


解决方案:

修改代码:把sql任务写rwxx_xq表,然后调大数据接口。调整上面实现方案步骤1,2的顺序。

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

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

相关文章

KaiwuDB 亮相中国 5G + 工业互联网大会,助力新型工业化

11月19-21日,由各相关政府部门共同主办的“2023 中国 5G工业互联网大会”在湖北武汉盛大举行。作为我国“5G工业互联网”领域的国家级顶会,本届大会以“数实融合,大力推进新型工业化”为主题,聚焦新型基础设施、产业转型升级、技术…

树莓派 cpolar实现内网穿透

树莓派 cpolar实现内网穿透 cpolar官网介绍 cpolar官网 树莓派安装cpolar 使用ssh连接树莓派终端,输入以下命令,即可安装cpolar curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash安装完成后可输入cpolar v…

idea 旧项目替换成新项目(项目名称,模块,代码)

文章目录 修改项目名替换模块、文件前缀全局替换包名局部替换xml、yml等其他文件 修改项目名 右击项目名称->Refactor->Rename(shiftF6) ctrlaltshifts 替换模块、文件前缀 git bash执行如下脚本 #/bin/bash # 单目录替换 for f in old-prefix*; do mv "$f…

语音机器人的两种常见业务场景

第一个业务场景 之前写过一篇语音机器人是真人录音好,还是TTS转语音更好的文章。今天再来说一说TTS一个很细微的场景。 假设一句话 这里是*****银行委托机构,您在*****银行的信用卡长期逾期至今仍未依照约定履行还款义务,为避免逃废债给您…

计算机网络:网络层

0 本节主要内容 问题描述 解决思路 1 问题描述 两大问题(重点,也是难点): 地址管理;路由选择。 1.1 子问题1:地址管理 网络上的这些主机和节点都需要使用一种规则来区分,就相当于是一种身…

【javaWeb】HTTP协议

HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的应用层协议 HTTP 是一个文本格式的协议. 可以通过 Chrome 开发者工具或者 Fiddler 抓包, 分析 HTTP 请求/响应的细节. 上图是通过Fiddler对访问百度搜索页时抓取的一个http协议的包。 观察抓包结果,可以看到,当前 http…

windows 下gcc编译的软件获取管理员权限

每次运行程序的时候需要管理员权限,一般可以右键管理员模式运行,或者在属性里设置默认管理员权限运行。但是当需要移动执行文件的位置后,必须重新设置管理员权限。这种操作相对来说麻烦,有没有一种办法直接在exe中声明呢&#xff…

vue3父子组件通过$parent与ref通信

父组件 <template><div><h1>ref与$parents父子组件通信 {{ parentMoney }}</h1><button click"handler">点击我子组件的值会减20</button><hr><child ref"children"></child></div> </te…

【机器学习】迁移学习

迁移学习&#xff1a;给定一个有标记的源域和一个无标记的目标域。这两个领域的数据分布不同。迁移学习的目的就是要借助源域的知识&#xff0c;来学习目标域的知识(标签)。或是指基于源域数据和目标域数据、源任务和目标任务之间的相似性&#xff0c;利用在源领域中学习到的知…

redis 集群

redis-cluster集群&#xff1a; redis3.0引入的分布式存储方案 集群由多个node节点组成&#xff0c;redis数据是分布在这写节点之中。 在集群之中分为主节点和从节点。 集群自带哨兵模式 集群模式当中&#xff0c;主从一一对应&#xff0c;数据的写入和读取于主从模式一样&a…

使用opencv将8位图像raw数据转成bmp文件的方法

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 这里说的图像raw数据是只包含图像数据的缓存。主要使用了cv::imencode接口将 cv::Mat转化为图像缓存。 #include <opencv2/opencv.hpp>/* 生成一幅…

【单调栈】最大宽度坡

public int maxWidthRamp(int[] nums) {/* 此方法思路正确&#xff0c;但超时int n nums.length;Deque<Integer> stack;int max 0;for (int i 0; i < n; i) {stack new LinkedList<>();stack.push(nums[i]);int j i 1;while (j < n) {stack.push(nums…

Banana Pi最新的路由器板BPI-R4上市销售,基于MediaTek MT7988A

Banana Pi 发布了一款新的路由器板 Banana Pi BPI-R4&#xff0c;基于配备四核 Arm CPU 的 MediaTek MT7988A SoC。该板不仅仅是Raspberry Pi 的另一个替代品&#xff0c;而且是用于家庭网络和自动化的设备。 Banana Pi BPI-R4 的外形尺寸比单板计算机更像网络设备。对于那些希…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 5》(9)

《Linux操作系统原理分析之Linux 进程管理 5》&#xff08;9&#xff09; 4 Linux 进程管理4.5 Linux 信号4.5.1 信号的作用和种类1.信号机制2.信号种类 4.5.2 信号的处理4.5.3 信号处理函数1&#xff0e;数据结构2&#xff0e; 处理函数 signal3&#xff0e;程序例 4 Linux 进…

School training competition ( Second )

A. Medium Number 链接 : Problem - 1760A - Codeforces 就是求三个数的中位数 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std; typedef long long LL; const int N 2e510;inline void …

详解混合整数二次规划 (MIQP) 投资组合优化问题--附Matlab和Python实现

&#x1f517; 运行环境&#xff1a;Matlab、Python &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&am…

新手用什么工具制作电子画册?新分享

随着数字化时代的到来&#xff0c;电子画册已成为企业宣传、展示产品的重要手段。对于新手来说&#xff0c;选择一款合适的工具是关键。今天&#xff0c;为大家推荐一款适合新手制作的电子画册工具&#xff0c;让你轻松制作出精美画册。 工具推荐&#xff1a;FLBOOK在线制作电子…

快速开发出一个公司网站

问题描述&#xff1a;参加一个创业活动&#xff0c;小组要求做一个公司网站&#xff0c;简单介绍一下自己公司的业务。需要快速完成。 问题解决&#xff1a;从网上找一个网站模板&#xff0c;类似于做PPT&#xff0c;搭建一个网站即可。 这里推荐的是京美建站、wordpress、he…

【JAVA学习笔记】72 - 满汉楼 - 餐饮管理系统

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter26 一、需求说明 满汉楼项目功能多&#xff0c;界面复杂&#xff0c;涉及到复杂的awt和swing技术和事件编程&#xff0c;做如下调整: 1.去掉界面和事件处理(工作中使用很少)&#xff0c;使…