CN109992329B - 一种基于后端切面技术的方法级性能分析方法 - Google Patents
一种基于后端切面技术的方法级性能分析方法 Download PDFInfo
- Publication number
- CN109992329B CN109992329B CN201910235778.3A CN201910235778A CN109992329B CN 109992329 B CN109992329 B CN 109992329B CN 201910235778 A CN201910235778 A CN 201910235778A CN 109992329 B CN109992329 B CN 109992329B
- Authority
- CN
- China
- Prior art keywords
- queue
- request
- performance analysis
- running
- condition
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于后端切面技术的方法级性能分析方法,包括如下步骤:步骤1:通过Spring切面技术获取一次请求下指定方法路径中执行过的所有方法的执行情况,获取该次请求的运行情况;步骤2:对请求的运行情况进行计数分析统计并提供相关数据接口;步骤3:定时通过数据接口收集性能数据;步骤4:生成性能分析报告。本发明借助Spring动态切面技术,对系统内部方法的运行次数,运行时间,运行状态进行记录分析,通过记录分析获取一份方法级性能分析报告,能够准确的定位到系统准确的性能瓶颈点。
Description
技术领域
本发明涉及一种基于后端切面技术的方法级性能分析方法,属于电子信息技术领域。
背景技术
在后端应用的架构逐渐被Springboot+SSM替代的时候,在此软件架构下常用的性能分析方法只是对应用的请求响应进行性能分析,这种分析一般只能分析出系统的性能瓶颈和某些接口的性能瓶颈,而不能分析出接口内部逻辑的性能瓶颈,特别是程序内部方法会出现交叉引用的情况,这样传统的性能分析方法就无法准确的定位到准确的性能瓶颈点,因此需要一种分析方法对执行方法进行性能分析。
发明内容
针对上述现有技术的不足,本发明提供一种基于后端切面技术的方法级性能分析方法,能够透过接口响应情况,分析内部方法运行情况,获取方法级性能分析报告。
为实现上述目的,本发明采用如下技术方案:
一种基于后端切面技术的方法级性能分析方法,包括如下步骤:
步骤1:通过Spring切面技术获取一次请求下指定方法路径中执行过的所有方法的执行情况,进而获取该次请求的运行情况;
步骤2:对请求的运行情况进行计数分析统计并提取相关数据接口;
步骤3:定时通过数据接口收集性能数据;
步骤4:生成性能分析报告。
优选的,所述执行情况包括事件类型、运行方法路径、触发时间点、运行状态、方法类型。
优选的,所述运行情况包括一次请求下指定方法路径中执行过的所有方法的运行方法路径、运行时间、运行状态、方法类型。
优选的,步骤1包括:
步骤1.1:通过Spring切面拦截所有Spring容器内的方法,每一个运行方法都有各自的前置和后置,将一个请求当成一个进程,每个方法为进程里的执行单元;
步骤1.2:创建一个方法执行情况的队列,该队列将存储每一次请求的后端执行的所有方法的前置和后置的触发时间点,前置和后置的触发时间点分开存储;
步骤1.3:当方法开始执行的前置事件触发时,先判断是否是要拦截的指定方法路径,否的话忽略该方法的执行情况,是的话将该方法的执行情况添加到队列里;
步骤1.4:当方法开始执行的后置时间触发时,先判断是否是要拦截的指定方法路径,否的话忽略该方法的执行情况,是的话将该方法的执行情况添加到队列里,同时判断队列的第一个元素中的对象方法和当前方法是否一致,不一致的话进入下一个方法的循环中,一致的话则循环退出,获取当前请求的运行情况。
优选的,运行时间的计算步骤包括:
步骤2.1:从所述队列的第一个元素对应的方法的前置进行递归,往下查找到该方法的后置,将该方法前置和后置的触发时间相减得到该方法的运行时间;
步骤2.2:将上一步中递归绕过的方法重新组装成一个队列进行上一步的操作;
步骤2.3:当循环递归后队列为空时,得到所有方法的运行时间。
优选的,步骤2中,分析统计指标有如下几个指标包括:调用次数,异常次数,平均时长,最大时长,数据库操作数。
优选的,所述方法包括入口方法,过程方法,数据库操作方法。
有益效果:
本发明借助Spring动态切面技术,对系统内部方法的运行次数,运行时间,运行状态进行记录分析,通过记录分析获取一份方法级性能分析报告,能够准确的定位到系统准确的性能瓶颈点。
附图说明
图1为本方法中实施例提供的基于后端切面技术的方法级性能分析的工作流程图;
图2为本方法中实施例提供的获取方法的执行情况的流程图;
图3为本方法中实施例提供的请求的运行情况计算规则示意图;
图4为本方法中实施例单个请求运行情况示意图;
图5为本方法中实施例提供的入口方法调用树性能统计报告示意图。
具体实施方式
下面结合实例对本发明做更进一步的解释。
本发明主要实施流程如下,相关流程图见图1。
1)通过Spring切面技术获取从http接口入口处方法到数据库操作类的所有方法运行情况。在实施过程中将方法分为三种类型:入口方法(Controller操作方法)、过程方法(Service操作方法)和数据库操作方法(Dao操作方法),具体方法运行情况如图4。图4中①代表入口方法、②代表过程方法、③代表数据库操作方法。同时每一条运行情况树中的每一个方法数据内包含:运行状态、方法名、运行时间以及各运行方法的上下游关系。
通过Spring切面技术获取所有方法的执行情况以及获取请求的运行情况的步骤如下(图2):
a)通过Spring切面拦截所有Spring容器内的方法,每一个运行方法都有各自的前置和后置。
b)创建一个方法执行情况的队列,该队列将存储每一次请求的后端执行的所有方法的前置和后置的触发时间点,前置和后置的触发时间点分开存储。
c)每一次请求都有多个方法会被调用,一个请求当成一个进程,每个方法为进程里的执行单元。
d)当方法开始执行的前置事件触发时,先判断是否是要拦截的指定方法路径,否的话忽略该方法的执行情况,是的话将该方法的执行情况添加到队列里。
方法执行情况包括:事件类型(前置事件/后置事件)、运行方法路径、触发时间点、运行状态、方法类型。
e)当方法开始执行的后置时间触发时,也需要先判断是否是要拦截的指定方法路径,否的话忽略该方法的执行情况,是的话将该方法的执行情况添加到队列里,同时判断队列的第一个元素中的对象方法和当前方法是否一致,不一致的话进入下一个方法的循环中,一致的话则循环退出,获取当前请求的运行情况。
f)运行时间计算规则如下,计算规则示意图见图3:
i)由于每个方法在队列都有前置和后置,从队列的第一个元素对应的方法的前置进行递归,往下查找到相同方法的后置事件类型,将这两个的触发时间相减就获取了一级方法的运行时间。每一级的运行情况包括运行时间、运行状态、运行方法路径,方法类型等参数。
ii)将上一步中递归绕过的方法重新组装成一个队列进行上一步的操作,这一步骤的结果级别低于上一个运行情况一个级别。
iii)当循环递归后队列为空时,所有方法的运行时间就计算出来了,实例图见图4。
2)对请求的运行情况进行计数分析统计,分析统计指标有如下几个指标:调用次数(callNum),异常次数(errorNum),平均时长(avgTime),最大时长(maxTime),数据库操作数(daoNum)等。
通过图4中的运行情况进行计数统计,每个方法每出现一次则调用次数加一,同时如每个方法前缀非[ok]时则异常次数加一,如当前方法为入口方法,同时其子方法存在数据库操作方法时,则数据库操作数加所有子数据库操作方法的次数。同时每一个方法都存在一个总运行时长和最大时长,总时长为所有该方法执行时间的累计总和,最大时长为该方法的所有运行时间最大的时间。通过每个方法的总运行时长除以总调用次数获取平均时长。
3)将上一步获取的业务指标实时保存到内存中,同时提供相应的外部接口外放该业务指标,以方便生成相应的性能报告。
性能测试报告包含如下几种格式:
入口方法性能统计报告:
据库操作方法性能统计报告:
统计维度 | 方法名 | 调用次数 | 异常次数 | 平均时长 | 最大时长 |
统计维度分为:一分钟、五分钟、十五分钟、全部,数据采集采集频率为每分钟一次。默认采集的性能数据为全量数据,其他三种维度都是通过运算获取。
入口方法调用树性能统计报告,实例见图5:
方法树 | 调用次数 | 异常次数 | 平均时长 | 最大时长 |
每一个入口方法都有4个单独的表格树分析报告,4个同样分别为一分钟、五分钟、十五分钟、全部。
以上为本发明的技术实施例和技术特点,仅用于说明本发明的技术方案而非限制。然而本领域技术人员仍可能基于本发明的教示和揭示内容而作出对本发明的技术方案的修改和等同替换。因此,本发明的保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替代和修正,并为上述权利要求书所涵盖。
Claims (4)
1.一种基于后端切面技术的方法级性能分析方法,其特征在于,包括如下步骤:
步骤1:通过Spring切面技术获取一次请求下指定方法路径中执行过的所有方法的执行情况,进而获取该次请求的运行情况;
步骤2:对请求的运行情况进行计数分析统计并提供相关数据接口;
步骤3:定时通过数据接口收集性能数据;
步骤4:生成性能分析报告;
所述执行情况包括事件类型、运行方法路径、触发时间点、运行状态、方法类型;
所述运行情况包括一次请求下指定方法路径中执行过的所有方法的运行方法路径、运行时间、运行状态、方法类型;
步骤1包括:
步骤1.1:通过Spring切面拦截所有Spring容器内的方法,每一个运行方法都有各自的前置和后置,将一个请求当成一个进程,每个方法为进程里的执行单元;
步骤1.2:创建一个方法执行情况的队列,该队列中存储每一次请求的后端执行的所有方法的前置和后置的触发时间点,前置和后置的触发时间点分开存储;
步骤1.3:当方法开始执行的前置事件触发时,先判断是否是要拦截的指定方法路径,否则该方法的执行情况,是则将该方法的执行情况添加到队列里;
步骤1.4:当方法开始执行的后置时间触发时,先判断是否是要拦截的指定方法路径,否则忽略该方法的执行情况,是则将该方法的执行情况添加到队列里,同时判断队列的第一个元素对应的对象方法和当前方法是否一致,不一致的话进入下一个方法的循环中,一致的话则循环退出,获取当前请求的运行情况。
2.根据权利要求1所述的一种基于后端切面技术的方法级性能分析方法,其特征在于,运行时间的计算步骤包括:
步骤2.1:从所述队列的第一个元素对应的方法的前置开始递归,往下查找到该方法的后置,将该方法前置和后置的触发时间相减得到该方法的运行时间;
步骤2.2:将上一步中递归绕过的方法重新组装成一个队列进行上一步的操作;
步骤2.3:当循环递归后队列为空时,得到所有方法的运行时间。
3.根据权利要求1所述的一种基于后端切面技术的方法级性能分析方法,其特征在于,步骤2中,分析统计指标有如下几个指标包括:调用次数,异常次数,平均时长,最大时长,数据库操作数。
4.根据权利要求1-3任一所述的一种基于后端切面技术的方法级性能分析方法,其特征在于,所述方法包括入口方法,过程方法,数据库操作方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910235778.3A CN109992329B (zh) | 2019-03-27 | 2019-03-27 | 一种基于后端切面技术的方法级性能分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910235778.3A CN109992329B (zh) | 2019-03-27 | 2019-03-27 | 一种基于后端切面技术的方法级性能分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109992329A CN109992329A (zh) | 2019-07-09 |
CN109992329B true CN109992329B (zh) | 2020-05-01 |
Family
ID=67131511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910235778.3A Active CN109992329B (zh) | 2019-03-27 | 2019-03-27 | 一种基于后端切面技术的方法级性能分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992329B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533679B2 (en) * | 2007-01-18 | 2013-09-10 | Intuit Inc. | Method and apparatus for inserting faults to test code paths |
CN103761474A (zh) * | 2014-01-24 | 2014-04-30 | 北京京东尚科信息技术有限公司 | 一种用于监控方法执行时间的监控方法和装置 |
CN104731564A (zh) * | 2013-12-18 | 2015-06-24 | 青岛海尔空调器有限总公司 | 系统接口调用记录的生成方法和装置 |
CN106294091A (zh) * | 2016-08-11 | 2017-01-04 | 福建富士通信息软件有限公司 | 一种无侵入式日志拦截性能分析方法及系统 |
CN106682119A (zh) * | 2016-12-08 | 2017-05-17 | 杭州销冠网络科技有限公司 | 基于http服务切面与日志系统的异步数据同步方法和系统 |
-
2019
- 2019-03-27 CN CN201910235778.3A patent/CN109992329B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533679B2 (en) * | 2007-01-18 | 2013-09-10 | Intuit Inc. | Method and apparatus for inserting faults to test code paths |
CN104731564A (zh) * | 2013-12-18 | 2015-06-24 | 青岛海尔空调器有限总公司 | 系统接口调用记录的生成方法和装置 |
CN103761474A (zh) * | 2014-01-24 | 2014-04-30 | 北京京东尚科信息技术有限公司 | 一种用于监控方法执行时间的监控方法和装置 |
CN106294091A (zh) * | 2016-08-11 | 2017-01-04 | 福建富士通信息软件有限公司 | 一种无侵入式日志拦截性能分析方法及系统 |
CN106682119A (zh) * | 2016-12-08 | 2017-05-17 | 杭州销冠网络科技有限公司 | 基于http服务切面与日志系统的异步数据同步方法和系统 |
Non-Patent Citations (1)
Title |
---|
"Spring AOP在函数接口调用性能分析及其日志处理方面的应用";等待你的蜕变;《https://blog.csdn.net/a236209186/article/details/78225108》;20171013;第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109992329A (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9354867B2 (en) | System and method for identifying, analyzing and integrating risks associated with source code | |
US9424288B2 (en) | Analyzing database cluster behavior by transforming discrete time series measurements | |
US5655074A (en) | Method and system for conducting statistical quality analysis of a complex system | |
CN109408347A (zh) | 一种指标实时分析系统及指标实时计算方法 | |
US7739662B2 (en) | Methods and apparatus to analyze processor systems | |
CN111078432B (zh) | 一种服务之间调度的追踪方法及装置 | |
CN106649119B (zh) | 流计算引擎的测试方法及装置 | |
CN102122263A (zh) | 一种java应用系统运行时监控方法和装置 | |
CN106293891B (zh) | 多维投资指标监督方法 | |
US11768754B2 (en) | Parallel program scalability bottleneck detection method and computing device | |
CN110489317A (zh) | 基于工作流的云系统任务运行故障诊断方法与系统 | |
CN111124791A (zh) | 一种系统测试方法及装置 | |
Butgereit | Using machine learning to prioritize automated testing in an agile environment | |
CN109101403A (zh) | 一种对移动端产生sql进行实时监控的方法及系统 | |
CN106294136B (zh) | 并行程序运行期间性能变化的在线检测方法和系统 | |
CN109992329B (zh) | 一种基于后端切面技术的方法级性能分析方法 | |
CN110334001A (zh) | 一种批量自动生成回声测试的方法和装置 | |
CN110287114A (zh) | 一种数据库脚本性能测试的方法及装置 | |
Jing et al. | A microservice fault identification method based on LightGBM | |
US7970776B1 (en) | Apparatus, method and computer readable medium for identifying and quantifying database disk-sort operations | |
EP3764232A1 (en) | Business transactions impact analysis | |
CN112732549B (zh) | 基于聚类分析的测试程序分类方法 | |
CN113568804A (zh) | 一种面向Web应用的性能瓶颈精准定位系统 | |
CN104050084B (zh) | 一种基于软件路径剖析结果的修改影响分析方法 | |
CN114358911B (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 | ||
CB02 | Change of applicant information |
Address after: 210043 floor 2, No.6 Huida Road, Jiangbei new district, Nanjing City, Jiangsu Province Applicant after: NANJING LIANCHUANG BEIDOU TECHNOLOGY APPLICATION RESEARCH INSTITUTE Co.,Ltd. Address before: 210036 14th Floor, Block A, Lianchuang Building, 18 Jihui Road, Gulou District, Nanjing City, Jiangsu Province Applicant before: NANJING LIANCHUANG BEIDOU TECHNOLOGY APPLICATION RESEARCH INSTITUTE Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |