CN112181784A - 基于字节码注入的代码故障分析方法及系统 - Google Patents
基于字节码注入的代码故障分析方法及系统 Download PDFInfo
- Publication number
- CN112181784A CN112181784A CN202011128519.XA CN202011128519A CN112181784A CN 112181784 A CN112181784 A CN 112181784A CN 202011128519 A CN202011128519 A CN 202011128519A CN 112181784 A CN112181784 A CN 112181784A
- Authority
- CN
- China
- Prior art keywords
- data
- program
- code
- monitoring data
- performance monitoring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000002347 injection Methods 0.000 title claims abstract description 31
- 239000007924 injection Substances 0.000 title claims abstract description 31
- 238000004458 analytical method Methods 0.000 title claims description 49
- 238000012544 monitoring process Methods 0.000 claims abstract description 93
- 238000000034 method Methods 0.000 claims abstract description 56
- 238000012549 training Methods 0.000 claims abstract description 48
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 23
- 239000011159 matrix material Substances 0.000 claims abstract description 22
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 19
- 238000005516 engineering process Methods 0.000 claims abstract description 16
- 238000003860 storage Methods 0.000 claims description 34
- 238000005457 optimization Methods 0.000 claims description 17
- 238000004140 cleaning Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 15
- 238000007405 data analysis Methods 0.000 claims description 15
- 238000012360 testing method Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 13
- 238000000605 extraction Methods 0.000 claims description 9
- 238000005406 washing Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 239000000243 solution Substances 0.000 description 8
- 238000012937 correction Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 230000002354 daily effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000011076 safety test Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
Abstract
本发明提供了一种基于字节码注入的代码故障分析方法及系统,所述方法包含:通过字节码技术监控程序运行,采集程序运行时的代码运行逻辑数据、性能监控数据和日志数据;根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型;获取程序故障状态下的性能监控数据和日志数据,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置。
Description
技术领域
本发明涉及程序监测领域,可适用于金融领域和其他领域,尤指一种基于字节码注入的代码故障分析方法及系统。
背景技术
随着软件系统的不断演进,软件系统愈发成熟,IT行业在各个领域都在走向普遍化和智能化。用户需求也呈现爆炸式的增长,随便快速交付,devops等理念的提出,传统的一个季度或者一个月度更新的月季度系统版本更新已经无法满足日益增长的用户需求。快速的迭代交付模式下,在测试人员比例下降,但是对于软件的稳定性,可靠性却有了更高的要求。对系统的分析诊断提出了更高的要求。如何在测试环境能够高效的分析系统程序,并自动化的提供整改建议。快速定位程序问题,优化程序结构和性能是一个很好的优化软件设计结构方向。这不仅可以加快研发测试效能,也可以提升开发测试能力输出。
当一个开发阶段进入测试流程时,才会暴露出很多的程序问题。当出现功能流程问题时,开发一般需要跟具日志去分析问题原因,如果遇到的是一些专项性问题,比如性能测试问题,安全测试问题。一般定位问题都需要花费较长的周期和时间去找出问题的所在原因。这往往需要花费大量的时间和成本,由于开发人员测试人员的技术能力参差不齐。对于一些技术性难题,目前都是靠个人经验技术经验去进行一些技术分析解决,如打javacore和heapdump,查询技术资料定位问题。人员成熟度不高的团队就更难解决较为复杂的代码问题。
综上,目前没有合理高效的解决代码分析定位修复这个问题的方案,因此,如何提供一种新的方案,是否能从技术方法去解决上述问题是本领域亟待解决的技术难题。
发明内容
本发明目的在于提供一种基于字节码注入的代码故障分析方法,帮助工作惹怒爱快速定位问题代码。
为达上述目的,本发明所提供的基于字节码注入的代码故障分析方法,具体包含:通过字节码技术监控程序运行,采集程序运行时的代码运行逻辑数据、性能监控数据和日志数据;根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型;获取程序故障状态下的性能监控数据和日志数据,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置。
在上述基于字节码注入的代码故障分析方法中,优选的,通过字节码技术监控程序运行包含:通过将agent程序部署于待监控的程序中执行监控程序运行。
在上述基于字节码注入的代码故障分析方法中,优选的,根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵包含:对所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行预定规则的清洗处理;根据特征值对清洗后的所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行数值结构化处理生成程序监控数据矩阵。
在上述基于字节码注入的代码故障分析方法中,优选的,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置包含:根据性能监控数据和日志数据通过所述程序分析模型获得程序正常状态下的代码运行逻辑数据;比较程序正常状态下和故障状态下的代码运行逻辑数据,获得代码故障发生位置。
在上述基于字节码注入的代码故障分析方法中,优选的,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型包含:根据预设比例将多个所述程序监控数据矩阵划分为训练数据集和测试数据集;通过所述训练数据集和所述测试数据集,利用卷积神经网络算法迭代数据训练构建程序分析模型。
本发明还提供一种基于字节码注入的代码故障分析系统,所述系统包含:监控数据采集装置、模型分析优化装置和数据分析预测装置;所述监控数据采集装置用于通过字节码技术监控程序运行,采集程序运行时的代码运行逻辑数据、性能监控数据和日志数据;所述模型分析优化装置用于根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型;所述数据分析预测装置用于获取程序故障状态下的性能监控数据和日志数据,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置。
在上述基于字节码注入的代码故障分析系统中,优选的,所述系统还包含自动部署装置,所述自动部署装置用于根据待监控的程序的环境信息,将agent程序部署于环境信息对应位址的服务器中,监控对应程序运行。
在上述基于字节码注入的代码故障分析系统中,优选的,所述系统还包含数据传输存储装置和数据结构化清洗装置;所述数据传输存储装置用于将采集到的代码运行逻辑数据、性能监控数据和日志数据存储于数据库;所述数据结构化清洗装置用于将所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行定义转换生成对应数值,根据所述数值结构化生成程序监控数据矩阵。
在上述基于字节码注入的代码故障分析系统中,优选的,所述模型分析优化装置包含特征提取单元和模型构建单元;所述特征提取单元用于利用所述代码运行逻辑数据、所述性能监控数据和所述日志数据,通过特征提取法提取获得训练特征;所述模型构建单元用于利用预设周期内的多个所述程序监控数据矩阵对应的训练特征,通过卷积神经网络算法训练构建程序分析模型。
在上述基于字节码注入的代码故障分析系统中,优选的,所述数据分析预测装置包含:根据性能监控数据和日志数据通过所述程序分析模型获得程序正常状态下的代码运行逻辑数据;比较程序正常状态下和故障状态下的代码运行逻辑数据,获得代码故障发生位置。
本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本发明的有益技术效果在于:结合基于字节码技术的预测分析解决方法;通过采集应用监控信息精确到代码层面的指标加入到模型的特征值中,通过机器学习算法自动预测代码问题并提出整改方案,帮助测试人员和开发项目组减少分析大量日志和监控数据定位问题,反复测试分析读取javacore和heapdump所花费的大量时间,最大程度的快速解决代码问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例所提供的基于字节码注入的代码故障分析方法的流程示意图;
图2为本发明一实施例所提供的程序监控数据矩阵的生成流程示意图;
图3为本发明一实施例所提供的程序分析模型的构建流程示意图;
图4为本发明一实施例所提供的基于字节码注入的代码故障分析方法的应用流程示意图;
图5为本发明一实施例所提供的基于字节码注入的代码故障分析系统的结构示意图;
图6为本发明一实施例所提供的基于字节码注入的代码故障分析系统的应用结构示意图;
图7为本发明一实施例所提供的自动部署装置的结构示意图;
图8为本发明一实施例所提供的监控数据采集装置图的结构示意图;
图9为本发明一实施例所提供的数据传输存储装置图的结构示意图;
图10为本发明一实施例所提供的数据结构化清洗装置图的结构示意图;
图11为本发明一实施例所提供的模型分析优化装置图的结构示意图;
图12为本发明一实施例所提供的数据分析预测装置图的结构示意图;
图13为本发明一实施例所提供的电子设备的结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
请参考图1所示,本发明所提供的基于字节码注入的代码故障分析方法,具体包含:
S101通过字节码技术监控程序运行,采集程序运行时的代码运行逻辑数据、性能监控数据和日志数据;
S102根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型;
S103获取程序故障状态下的性能监控数据和日志数据,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置。
其中,通过字节码技术监控程序运行包含:通过将agent程序部署于待监控的程序中执行监控程序运行。
在实际工作中,本发明所提供的基于字节码注入的代码故障分析方法结合基于字节码技术获取程序代码运行逻辑数据,性能监控数据、日志数据进行算法训练分析形成自动定位代码问题,主要可采用以下流程予以实现:
1、通过接口自动部署agent,监控java运行程序,获取程序运行数据、性能监控数据以及日志数据。
2、通过netty通信根据步骤1中获取到的数据,将数据发送至后台数据收集服务。并数据实时传输到远端,并持久化到数据库中。
3、数据结构化装置,将步骤2中收集采集的数据进行结构化,形成程序监控功能数据矩阵,并将数据回存到数据库系统中;解决闭环问题同时也标记到数据中。
4、数据模型训练,在步骤3完成后,将每日将采集到的数据通过定时任务转存到大数据的数据湖中,启动算法进行模型的迭代数据训练和优化。
5、数据分析系统,将步骤4中训练的新的模型参数更新到系统中,对步骤3结构化的有问题的数据进行预测分析。并将结果推送给开发测试。
请参考图2所示,在本发明一实施例中,根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵包含:
S201对所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行预定规则的清洗处理;
S202根据特征值对清洗后的所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行数值结构化处理生成程序监控数据矩阵。
具体的,在实际工作中,上述清洗处理可包含:
定频获取数据库未被结构化数据先进行清洗操作;目前将同一时段的相同数据进行清洗,统计条数合并。将数据初步统计分析下完成后转化成json数据;
对json数据进行数据转换,转换内容如下:将非数值化数据更具分类定义,转化为数值特征数据。根据模型特征需求,将一些特征数据进行组合计算,形成结构化数据。具体内容数据如下:
将非数值化数据更具分类定义,转化为数值特征数据:a.程序运行结构类名和方法名组合,如:org.apache.commons.httpclient.HttpClient#execute;根据定义数据字典表查询解释为apache分类1,http分类值2,HttpClient包1,执行方法1组合转化为数据1211。b.线程执行方法数据。c.内存堆栈数据。d.日志对应关键字数据(此项数据根据使用业务线的不同会有不同的词义库)e.日志程序异常堆栈信息。e解决方案(如果问题已闭环转化此值用于训练)。
根据模型特征需求,将一些特征数据进行组合计算:a.执行方法耗时。b.方法调用次数。c.方法内变量占用内存大小。d.cpu消耗百分比。e.内存近段时间浮动情况。f.线程近段时间浮动情况。g.gc次数情况。h.gc近段时间耗时情况。i.网络流量。j.磁盘io。k.新生代老年代内存比值。l.大小gc频率。
以上即是结构化构造数据,亦是模型训练结构化数据来源程序监控数据矩阵。
请参考图3所示,在本发明一实施例中,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型包含:
S301根据预设比例将多个所述程序监控数据矩阵划分为训练数据集和测试数据集;
S302通过所述训练数据集和所述测试数据集,利用卷积神经网络算法迭代数据训练构建程序分析模型。
进一步的,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置包含:根据性能监控数据和日志数据通过所述程序分析模型获得程序正常状态下的代码运行逻辑数据;比较程序正常状态下和故障状态下的代码运行逻辑数据,获得代码故障发生位置。
实际工作中,所述程序分析模型可根据一个月前的数据至十三个月前的数据作为训练数据集,将最近一个月的数据作为测试训练集;将上述特征提取组成特征矩阵;使用卷积神经网络算法进行训练分析;通过精确度和召回率、准确率进行模型调整;通过是否有强相关性鲁棒性进行特征值优化,从而获得程序分析模型。利用,所述程序分析模型在后续进行代码问题分析过程中可分析问题的分类和相似度,通过预测找到与其代码相似的数据,通过对比异同的方式找到相似数据程序路径的不一致和分析问题根因,对比相同异常问题的数据找到diff,将diff的地方反转化为代码,同时diff已整改数据的数据内容,将已整改的数据的整改内容和反转化的代码数据结合同时提供给使用者。
为更清楚的理解本发明所提供的基于字节码注入的代码故障分析方法的具体实施流程,以下请参考图4所示,结合上述实施例进行整体实施流程说明:
步骤S401、测试信息相关配置;
步骤S402、自动部署监控采集装置;
步骤S403、将agent程序部署启动到应用程序中;
步骤S404、应用程序部署agent后对外暴露可监听信息;
步骤S405、定频采集应用程序暴露出的监控信息通过netty发送给远端服务;
步骤S406、远端服务通过netty接收到相关数据后转存到数据库中;
步骤S407、数据库存储节点,存储每日数据信息和参数配置和字典词义表,提供给各个装置的信息获取;
步骤S408、获取到采集数据后,对数据进行一个数据清洗,整理。根据特征值进行结构化改造然后回存到数据库中;
步骤S409、大数据存储平台,将每日的数据通过批量下数的方式存储到大数据数据湖中提供给模型训练;
步骤S410、S409数据准备就绪后,通过划分训练和测试数据集进行模型训练,不断调整特征优化模型准确率;
步骤S411、根据获取的问题分析预测优化模型预测现在的数据,对其进行分析并提出整改建议;
步骤S412、问题分析预测报文推送。
请参考图5所示,本发明还提供一种基于字节码注入的代码故障分析系统,所述系统包含:监控数据采集装置、模型分析优化装置和数据分析预测装置;所述监控数据采集装置用于通过字节码技术监控程序运行,采集程序运行时的代码运行逻辑数据、性能监控数据和日志数据;所述模型分析优化装置用于根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型;所述数据分析预测装置用于获取程序故障状态下的性能监控数据和日志数据,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置。
在上述实施例中,所述模型分析优化装置包含特征提取单元和模型构建单元;所述特征提取单元用于利用所述代码运行逻辑数据、所述性能监控数据和所述日志数据,通过特征提取法提取获得训练特征;所述模型构建单元用于利用预设周期内的多个所述程序监控数据矩阵对应的训练特征,通过卷积神经网络算法训练构建程序分析模型。
在本发明一实施例中,所述系统还包含自动部署装置,所述自动部署装置用于根据待监控的程序的环境信息,将agent程序部署于环境信息对应位址的服务器中,监控对应程序运行。在另一实施例中,所述系统还包含数据传输存储装置和数据结构化清洗装置;所述数据传输存储装置用于将采集到的代码运行逻辑数据、性能监控数据和日志数据存储于数据库;所述数据结构化清洗装置用于将所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行定义转换生成对应数值,根据所述数值结构化生成程序监控数据矩阵。
实际工作中,本发明所提供的基于字节码注入的代码故障分析系统可参考图6所示,自动部署装置1与监控数据采集装置2相连;监控数据采集装置2与数据传输存储装置3相连;数据结构化清洗装置4与数据传输存储装置3相连;模型分析优化装置5与数据传输存储装置3相连;数据分析预测装置6与数据传输存储装置3相连。
自动部署装置1:根据应用程序环境信息,动态将监控数据采集装置2部署到环境信息的对应ip地址服务器中,并启动在程序进程中。其中,自动部署装置1的内部结构如图7所示,所述有自动部署装置1包含自动部署配置单元11,所述自动部署配置单元11用于配置获取需要采集部署的环境信息,应用名等如:127.0.0.1root root应用名202008。
监控数据采集装置2:运用字节码技术获取监控应用信息,包括程序代码的整体运行结构逻辑,可以梳理出程序执行的执行链路,可用于分析代码问题发生点和运行代码运行错误拐点。启动方法监听,从jmx接口中获取jvm虚拟机性能监控数据,从log类中获取日志上下文。从方法运行入口监控方法执行路径,class类方法路径和耗时信息,此项信息可以定位到每个方法的耗时和每个变量的大小,精确定位到问题根因。通过定频的方式将收集到的信息通过构建netty client的方式发送至数据传输存储装置3。其中,监控数据采集装置2的内部结构如图8所示,所述监控数据采集装置2包含信息获取单元21和数据发送单元22,其中:信息获取单元21用于注入程序代码获取数据的单元,使用字节码技术监听程序获取到程序代码运行逻辑数据、性能监控数据、日志数据,将其组装成数据发送单元22所需要的监控数据。数据发送单元22用于根据信息获取单元21监控到的相关数据。通过定频的方式使用netty client发送给远端存储节点。
数据传输存储装置3:实时数据分析的存储装置,将采集到的数据使用nettyserver接收保存到数据库中,数据的结构化,分析问题的闭环记录都存储在这个装置中。其中,数据传输存储装置3的内部结构如图9所示,所述数据传输存储装置3包括数据接收单元31、数据存储单元32。数据接收单元31使用netty server,监控数据采集装置2发送过来的数据,将数据拆解后存储数据存储单元32。数据存储单元32用于临时存放收集到的监控数据集,只做数据存储查询用途,实际为数据库节点。
数据结构化清洗装置4:将收集到的程序监控数据进行定义转换,将类等数据信息转化为数值,结构化形成数据矩阵回存到数据库中。其中,所述数据结构化清洗装置4的内部结构如图10所示,所述数据结构化清洗装置4包括数据查询清洗单元41、监控数据转换单元42,和数据回存单元43;
数据查询清洗单元41用于定频获取数据库未被结构化数据先进行清洗操作。目前将同一时段的相同数据进行清洗,统计条数合并。将数据初步统计分析下完成后转化成json数据移交给监控数据转换单元42,进行数据转换。
监控数据转换单元42用于对数据查询清洗单元41传送的json数据进行转换,转换内容如下:将非数值化数据更具分类定义,转化为数值特征数据。根据模型特征需求,将一些特征数据进行组合计算,形成结构化数据。具体内容数据如下:
A.将非数值化数据更具分类定义,转化为数值特征数据:a.程序运行结构类名和方法名组合,如:org.apache.commons.httpclient.HttpClient#execute;根据定义数据字典表查询解释为apache分类1,http分类值2,HttpClient包1,执行方法1组合转化为数据1211。b.线程执行方法数据。c.内存堆栈数据。d.日志对应关键字数据(此项数据根据使用业务线的不同会有不同的词义库)e.日志程序异常堆栈信息。e解决方案(如果问题已闭环转化此值用于训练)。
B.根据模型特征需求,将一些特征数据进行组合计算:a.执行方法耗时。b.方法调用次数。c.方法内变量占用内存大小。d.cpu消耗百分比。e.内存近段时间浮动情况。f.线程近段时间浮动情况。g.gc次数情况。h.gc近段时间耗时情况。i.网络流量。j.磁盘io。k.新生代老年代内存比值。l.大小gc频率;以上即是结构化构造数据,亦是模型训练结构化数据来源。
数据回存单元43用于获取到所有结构化的数据后将数据回存到数据传输存储装置3中。
模型分析优化装置5:4、5装置为这个系统的核心。将结构化的监控数据提取相关特征,如使用的java类信息,方法耗时信息,cpu、内存比值信息等提取作为训练特征,通过卷积神经网络算法训练分类模型形成对应的程序问题分析预测模型。其中,所述模型分析优化装置5的内部结构如图11所示,所述模型分析优化装置5包括数据获取存储单元51、模型训练单元52;数据获取存储单元51用于通过每日定时任务批量将当日闭环的结构化数据转存到大数据数据湖中,做数据的长久性存储并作为训练数据提供给模型使用。模型训练单元52用于根据一个月前的数据至十三个月前的数据作为训练数据集,将最近一个月的数据作为测试训练集。将上述特征提取组成特征矩阵。使用卷积神经网络算法进行训练分析。通过精确度和召回率、准确率进行模型调整。通过是否有强相关性鲁棒性进行特征值的优化。获得一个可分析定位问题的数据模型。
数据分析预测装置6:将模型用来分析实时采集到的具有问题的数据,通过分析数据预测程序问题所在,定位到类和方法,并跟据之前的训练结果推测修复内容及整改建议;在一实施例中,可根据性能监控数据和日志数据通过所述程序分析模型获得程序正常状态下的代码运行逻辑数据;比较程序正常状态下和故障状态下的代码运行逻辑数据,获得代码故障发生位置。其中,所述数据分析预测装置6的内部结构如图12所示,所述数据分析预测装置6包括数据获取分析预测单元61、结果推送单元62;数据获取分析预测单元61用于模型分析优化装置5作为数据获取存储单元51的分析预测模型,将结构化的数据从数据库中查出,做预测分析,分析问题的分类和相似度,通过预测找到与其代码相似的数据,通过对比异同的方式找到相似数据程序路径的不一致和分析问题根因,对比相同异常问题的数据找到diff,将diff的地方反转化为代码,同时diff已整改数据的数据内容,将已整改的数据的整改内容和反转化的代码数据结合同时提供给使用者。用以预测定位程序问题原因,给予整改建议。结果推送单元62用于将分析的代码结果通过报文形式推送通知给开发和测试人员,将代码问题,监控数据,分析结果,整改修复意见一并发送。
本发明的有益技术效果在于:结合基于字节码技术的预测分析解决方法;通过采集应用监控信息精确到代码层面的指标加入到模型的特征值中,通过机器学习算法自动预测代码问题并提出整改方案,帮助测试人员和开发项目组减少分析大量日志和监控数据定位问题,反复测试分析读取javacore和heapdump所花费的大量时间,最大程度的快速解决代码问题。
本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
如图13所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图13中所示的所有部件;此外,电子设备600还可以包括图13中没有示出的部件,可以参考现有技术。
如图13所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。
其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。
输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。
存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种基于字节码注入的代码故障分析方法,其特征在于,所述方法包含:
通过字节码技术监控程序运行,采集程序运行时的代码运行逻辑数据、性能监控数据和日志数据;
根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型;
获取程序故障状态下的性能监控数据和日志数据,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置。
2.根据权利要求1所述的基于字节码注入的代码故障分析方法,其特征在于,通过字节码技术监控程序运行包含:通过将agent程序部署于待监控的程序中执行监控程序运行。
3.根据权利要求1所述的基于字节码注入的代码故障分析方法,其特征在于,根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵包含:
对所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行预定规则的清洗处理;
根据特征值对清洗后的所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行数值结构化处理生成程序监控数据矩阵。
4.根据权利要求1所述的基于字节码注入的代码故障分析方法,其特征在于,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置包含:
根据性能监控数据和日志数据通过所述程序分析模型获得程序正常状态下的代码运行逻辑数据;
比较程序正常状态下和故障状态下的代码运行逻辑数据,获得代码故障发生位置。
5.根据权利要求1所述的基于字节码注入的代码故障分析方法,其特征在于,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型包含:
根据预设比例将多个所述程序监控数据矩阵划分为训练数据集和测试数据集;
通过所述训练数据集和所述测试数据集,利用卷积神经网络算法迭代数据训练构建程序分析模型。
6.一种基于字节码注入的代码故障分析系统,其特征在于,所述系统包含:监控数据采集装置、模型分析优化装置和数据分析预测装置;
所述监控数据采集装置用于通过字节码技术监控程序运行,采集程序运行时的代码运行逻辑数据、性能监控数据和日志数据;
所述模型分析优化装置用于根据所述代码运行逻辑数据、所述性能监控数据和所述日志数据获得程序监控数据矩阵,利用预设周期内的多个所述程序监控数据矩阵通过卷积神经网络算法训练构建程序分析模型;
所述数据分析预测装置用于获取程序故障状态下的性能监控数据和日志数据,根据性能监控数据和日志数据通过所述程序分析模型获得代码运行逻辑数据,根据代码运行逻辑数据定位代码故障发生位置。
7.根据权利要求6所述的基于字节码注入的代码故障分析系统,其特征在于,所述系统还包含自动部署装置,所述自动部署装置用于根据待监控的程序的环境信息,将agent程序部署于环境信息对应位址的服务器中,监控对应程序运行。
8.根据权利要求6所述的基于字节码注入的代码故障分析系统,其特征在于,所述系统还包含数据传输存储装置和数据结构化清洗装置;
所述数据传输存储装置用于将采集到的代码运行逻辑数据、性能监控数据和日志数据存储于数据库;
所述数据结构化清洗装置用于将所述代码运行逻辑数据、所述性能监控数据和所述日志数据进行定义转换生成对应数值,根据所述数值结构化生成程序监控数据矩阵。
9.根据权利要求6所述的基于字节码注入的代码故障分析系统,其特征在于,所述模型分析优化装置包含特征提取单元和模型构建单元;
所述特征提取单元用于利用所述代码运行逻辑数据、所述性能监控数据和所述日志数据,通过特征提取法提取获得训练特征;
所述模型构建单元用于利用预设周期内的多个所述程序监控数据矩阵对应的训练特征,通过卷积神经网络算法训练构建程序分析模型。
10.根据权利要求6所述的基于字节码注入的代码故障分析系统,其特征在于,所述数据分析预测装置包含:
根据性能监控数据和日志数据通过所述程序分析模型获得程序正常状态下的代码运行逻辑数据;
比较程序正常状态下和故障状态下的代码运行逻辑数据,获得代码故障发生位置。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一所述方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至5任一所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011128519.XA CN112181784B (zh) | 2020-10-21 | 2020-10-21 | 基于字节码注入的代码故障分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011128519.XA CN112181784B (zh) | 2020-10-21 | 2020-10-21 | 基于字节码注入的代码故障分析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181784A true CN112181784A (zh) | 2021-01-05 |
CN112181784B CN112181784B (zh) | 2024-03-26 |
Family
ID=73923042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011128519.XA Active CN112181784B (zh) | 2020-10-21 | 2020-10-21 | 基于字节码注入的代码故障分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181784B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965896A (zh) * | 2021-02-10 | 2021-06-15 | 中国工商银行股份有限公司 | 基于动态字节码的测试环境故障检测方法及装置 |
CN115879104A (zh) * | 2023-02-14 | 2023-03-31 | 北京圣芯诺科技有限公司 | 监控数据安全的数据处理系统、电子设备及程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1118940A2 (en) * | 1994-12-20 | 2001-07-25 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
US20040054695A1 (en) * | 2002-09-17 | 2004-03-18 | International Business Machines Corporation | Problem determination method, system and program product |
CN103425584A (zh) * | 2013-08-27 | 2013-12-04 | 上海复深蓝信息技术有限公司 | 基于Java字节码的大型应用回归测试信息处理方法 |
CN107133518A (zh) * | 2017-04-10 | 2017-09-05 | 中国民生银行股份有限公司 | 基于参数和信息流的源代码越权检测方法及装置 |
CN110673837A (zh) * | 2019-08-29 | 2020-01-10 | 腾讯科技(深圳)有限公司 | 代码修复方法及装置、电子设备、计算机可读存储介质 |
CN110728575A (zh) * | 2019-07-15 | 2020-01-24 | 国家电网有限公司 | 一种电力交易平台web安全深度监控方法 |
CN111162949A (zh) * | 2019-12-31 | 2020-05-15 | 国网山西省电力公司信息通信分公司 | 一种基于Java字节码嵌入技术的接口监测方法 |
CN111538652A (zh) * | 2020-03-30 | 2020-08-14 | 中国平安人寿保险股份有限公司 | 一种应用控件测试方法及相关设备 |
-
2020
- 2020-10-21 CN CN202011128519.XA patent/CN112181784B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1118940A2 (en) * | 1994-12-20 | 2001-07-25 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
US20040054695A1 (en) * | 2002-09-17 | 2004-03-18 | International Business Machines Corporation | Problem determination method, system and program product |
CN103425584A (zh) * | 2013-08-27 | 2013-12-04 | 上海复深蓝信息技术有限公司 | 基于Java字节码的大型应用回归测试信息处理方法 |
CN107133518A (zh) * | 2017-04-10 | 2017-09-05 | 中国民生银行股份有限公司 | 基于参数和信息流的源代码越权检测方法及装置 |
CN110728575A (zh) * | 2019-07-15 | 2020-01-24 | 国家电网有限公司 | 一种电力交易平台web安全深度监控方法 |
CN110673837A (zh) * | 2019-08-29 | 2020-01-10 | 腾讯科技(深圳)有限公司 | 代码修复方法及装置、电子设备、计算机可读存储介质 |
CN111162949A (zh) * | 2019-12-31 | 2020-05-15 | 国网山西省电力公司信息通信分公司 | 一种基于Java字节码嵌入技术的接口监测方法 |
CN111538652A (zh) * | 2020-03-30 | 2020-08-14 | 中国平安人寿保险股份有限公司 | 一种应用控件测试方法及相关设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965896A (zh) * | 2021-02-10 | 2021-06-15 | 中国工商银行股份有限公司 | 基于动态字节码的测试环境故障检测方法及装置 |
CN115879104A (zh) * | 2023-02-14 | 2023-03-31 | 北京圣芯诺科技有限公司 | 监控数据安全的数据处理系统、电子设备及程序产品 |
CN115879104B (zh) * | 2023-02-14 | 2023-05-30 | 北京圣芯诺科技有限公司 | 监控数据安全的数据处理系统、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112181784B (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105094783A (zh) | 安卓应用稳定性测试的方法及装置 | |
CN108459951B (zh) | 测试方法和装置 | |
CN112783793B (zh) | 自动化接口测试系统及方法 | |
CN112181784A (zh) | 基于字节码注入的代码故障分析方法及系统 | |
CN109359020A (zh) | 启动时间测试方法及装置、计算机装置及存储介质 | |
CN109828750B (zh) | 自动配置数据埋点的方法、装置、电子设备及存储介质 | |
CN111158741A (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN110569194A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN108984393A (zh) | 一种单元测试代码自动生成方法及装置 | |
CN111930625A (zh) | 基于云服务平台的日志获取方法、装置及系统 | |
CN109508204B (zh) | 一种前端代码质量检测方法及装置 | |
CN113238901B (zh) | 多设备的自动化测试方法及装置、存储介质、计算机设备 | |
CN114416546A (zh) | 一种代码覆盖率确定方法及装置 | |
CN113849484A (zh) | 一种大数据组件升级方法、装置、电子设备及存储介质 | |
CN112380118A (zh) | 单元测试方法、装置、介质及电子设备 | |
CN114091687A (zh) | 机器学习模型自动交付和部署的方法及装置 | |
CN113342600A (zh) | 一种程序依赖插件的监测方法及装置 | |
CN113282493A (zh) | 冒烟测试的方法、装置、存储介质和电子设备 | |
CN113485919A (zh) | 测试方法、测试装置及计算机可读存储介质 | |
CN111008140A (zh) | 一种跨平台的ui自动化测试方法及装置 | |
CN115840715B (zh) | 软件测试管理方法、装置和存储介质 | |
CN110175116B (zh) | 一种测试日期切换方法、装置及系统 | |
CN117520132A (zh) | 系统性能测试的瓶颈分析方法及装置 | |
CN113723800A (zh) | 风险识别模型训练方法及装置、风险识别方法及装置 | |
CN113986742A (zh) | 一种自动化测试方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |