公开/公告号CN116647474A
专利类型发明专利
公开/公告日2023-08-25
原文格式PDF
申请/专利权人 浙江数新网络有限公司;
申请/专利号CN202310583874.3
申请日2023-05-19
分类号H04L43/0805(2022.01);H04L43/06(2022.01);H04L41/069(2022.01);G06F11/07(2006.01);
代理机构北京汇信合知识产权代理有限公司 11335;
代理人卢亮辉
地址 311121 浙江省杭州市余杭区仓前街道文一西路1218号7号楼201室
入库时间 2024-01-17 01:24:51
法律状态公告日
法律状态信息
法律状态
2023-09-12
实质审查的生效 IPC(主分类):H04L43/0805 专利申请号:2023105838743 申请日:20230519
实质审查的生效
技术领域
本发明涉及互联网技术领域,具体涉及一种通过分析Nginx日志精确发现接口性能问题的方法及系统。
背景技术
Nginx是一种非常流行的免费开源的web服务器软件,目前大量的web服务都会使用Nginx做反向代理和负责均衡。同时Nginx的日志中能够记录客户端向web服务调用接口url,接口返回状态码,接口请求参数,接口响应时长等信息,我们可以通过对这些信息进行统计分析,发现web服务接口存在的一些性能问题。
目前也会通过对Nginx的日志进行收集分析,对系统各个接口做调用次数,平均响应时长等指标的统计,从而能发现一些响应时间较长的接口,进行性能优化。但在实际业务中,会存在接口平均响应时间符合要求,但是在某些特定接口请求参数条件下,响应时间远大于平均时间的情况,常见的例如当入参没有包含某个特定参数导致接口逻辑中查询数据库没有正常走索引而响应变慢,通过目前的统计方式不能很精准的发现这类问题。
发明内容
本发明的目的在于提供一种精准问题参数的通过分析Nginx日志精确发现接口性能问题的方法及系统
为解决上述技术问题,本发明提供一种通过分析Nginx日志精确发现接口性能问题的方法,包括以下步骤:
从Nginx日志中获取各个接口的请求信息;所述请求信息包括接口请求参数和接口响应时长;
根据请求信息的接口响应时长,计算各个接口的平均响应时长;
根据平均响应时长和第一预设阈值,从各个接口的请求信息中提取异常信息;
根据平均响应时长和第二预设阈值,从各个接口的请求信息中提取正常信息;
根据异常信息和正常信息的接口请求参数进行分析,得到分析结果。
优选地,所述第一预设阈值等于两倍的平均响应时长。
优选地,根据平均响应时长和第一预设阈值,从各个接口的请求信息中提取异常信息,具体包括以下步骤:
将同一接口中接口响应时长大于两倍平均响应时长的请求信息,作为异常信息。
优选地,所述第二预设阈值为平均响应时长上下浮动10%。
优选地,根据平均响应时长和第二预设阈值,从各个接口的请求信息中提取正常信息,具体包括以下步骤:
将同一接口中接口响应在平均响应时长上下浮动10%以内的请求信息,作为正常信息。
优选地,根据异常信息和正常信息的接口请求参数进行分析,得到分析结果,具体包括以下步骤:
将出现在异常信息且未出现在正常信息的接口请求参数,作为可疑参数;
对可疑参数进行分析,得到分析结果。
优选地,将出现在异常信息且未出现在正常信息的接口请求参数,作为可疑参数,具体包括以下步骤:
对所有异常信息的接口请求中的各个接口请求参数解析参数名,作为第一set集合;
对所有正常信息的接口请求中的各个接口请求参数解析参数名,作为第二set集合;
第一set集合和第二set集合求差集;
根据差集,得到可疑参数。
优选地,从Nginx日志中获取各个接口的请求信息,具体包括以下步骤:
使用日志采集服务从Nginx日志中获取各个接口的请求信息。
优选地,所述参数名为jsonPath格式保存。
本发明还提供一种通过分析Nginx日志精确发现接口性能问题的系统,包括:
获取模块,用于从Nginx日志中获取各个接口的请求信息;所述请求信息包括接口请求参数和接口响应时长;
平均响应时长计算模块,用根据请求信息的接口响应时长,计算各个接口的平均响应时长;
异常信息提取模块,用根据平均响应时长和第一预设阈值,从各个接口的请求信息中提取异常信息;
正常信息提取模块,用根据平均响应时长和第二预设阈值,从各个接口的请求信息中提取正常信息;
分析模块,用根据异常信息和正常信息的接口请求参数进行分析,得到分析结果。
与现有技术相比,本发明的有益效果为:
本发明通过对Nginx的日志进行收集分析,找出远超接口平均响应时长的这部分请求的详细信息,并通过对这些请求的入参进行一些对比分析,比较精准的找出导致这次请求响应变长的参数,从而能够对该接口进行更好的性能优化。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1是实施例1获取分析结果报告的流程示意图;
图2是本发明一种通过分析Nginx日志精确发现接口性能问题的方法的流程示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图对本发明做进一步的详细描述:
本发明提供一种通过分析Nginx日志精确发现接口性能问题的方法,包括以下步骤:
从Nginx日志中获取各个接口的请求信息;所述请求信息包括接口请求参数和接口响应时长;
根据请求信息的接口响应时长,计算各个接口的平均响应时长;
根据平均响应时长和第一预设阈值,从各个接口的请求信息中提取异常信息;
根据平均响应时长和第二预设阈值,从各个接口的请求信息中提取正常信息;
根据异常信息和正常信息的接口请求参数进行分析,得到分析结果。
优选地,所述第一预设阈值等于两倍的平均响应时长。
优选地,根据平均响应时长和第一预设阈值,从各个接口的请求信息中提取异常信息,具体包括以下步骤:
将同一接口中接口响应时长大于两倍平均响应时长的请求信息,作为异常信息。
优选地,所述第二预设阈值为平均响应时长上下浮动10%。
优选地,根据平均响应时长和第二预设阈值,从各个接口的请求信息中提取正常信息,具体包括以下步骤:
将同一接口中接口响应在平均响应时长上下浮动10%以内的请求信息,作为正常信息。
优选地,根据异常信息和正常信息的接口请求参数进行分析,得到分析结果,具体包括以下步骤:
将出现在异常信息且未出现在正常信息的接口请求参数,作为可疑参数;
对可疑参数进行分析,得到分析结果。
优选地,将出现在异常信息且未出现在正常信息的接口请求参数,作为可疑参数,具体包括以下步骤:
对所有异常信息的接口请求中的各个接口请求参数解析参数名,作为第一set集合;
对所有正常信息的接口请求中的各个接口请求参数解析参数名,作为第二set集合;
第一set集合和第二set集合求差集;
根据差集,得到可疑参数。
优选地,从Nginx日志中获取各个接口的请求信息,具体包括以下步骤:
使用日志采集服务从Nginx日志中获取各个接口的请求信息。
优选地,所述参数名为jsonPath格式保存。
本发明还提供一种通过分析Nginx日志精确发现接口性能问题的系统,包括:
获取模块,用于从Nginx日志中获取各个接口的请求信息;所述请求信息包括接口请求参数和接口响应时长;
平均响应时长计算模块,用根据请求信息的接口响应时长,计算各个接口的平均响应时长;
异常信息提取模块,用根据平均响应时长和第一预设阈值,从各个接口的请求信息中提取异常信息;
正常信息提取模块,用根据平均响应时长和第二预设阈值,从各个接口的请求信息中提取正常信息;
分析模块,用根据异常信息和正常信息的接口请求参数进行分析,得到分析结果。
为了更好的说明本发明的技术效果,本发明提供如下具体实施例说明上述技术流程:
实施例1、一种通过分析Nginx日志精确发现接口性能问题的方法,如图1所示,包括以下步骤:
(1)使用日志采集服务将Nginx日志中接口的请求信息采集到数据库,请求信息包含接口url,接口返回状态码,接口请求参数,接口响应时长等信息:
(2)按接口为分组维度统计出各个接口的平均响应时长,并将统计结果保存到一个map中,map的key为接口url地址,value为该接口平均响应时间;
(3)遍历平均响应时长统计的map,依次在数据库中查询出当前接口所有响应时长远超平均响应时长(远超的标准可以自定义,例如平均响应时长的两倍)的接口调用的入参信息(异常信息的接口请求参数),并依次进行解析提取其中的参数名,将只要任一请求中出现过的参数名以类似jsonPath的格式保存到一个set集合set1中(第一set集合)。
(4)在数据库中查询出当前接口响应时长接近平均响应时长(接近的标准可以自定义,例如平均响应时长上下浮动10%)的接口调用的接口请求参数(正常信息的接口请求参数),并进行解析提取其中的参数名,将所有请求都出现过的参数名以类似jsonPath的格式保存到一个set集合set2中(第二set集合)。
(5)对两个set求差集,获取在set2中而不在set1中的所有参数名并保存到集合set3中,接口响应时间变长有可能就是因为入参没有传递这些集合set3中参数导致的,后面可以根据这些信息对接口进行针对性的性能优化。
(6)所有接口都统计完成后,输出分析结果报告。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、模组或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、模组或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本发明的方法中限定的上述功能。需要说明的是,本发明上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
机译: 日志收集/分析系统,日志收集方法,用于计算机性能的日志收集程序,日志分析方法,用于计算机性能的日志分析程序,日志收集设备,日志分析设备,日志收集和记录
机译: 数学教育服务系统,一种服务方法,一个数学问题分析和生成装置,以及一种能够通过变换数学问题向学习者提供各种问题类型的方法
机译: 一种用于分析应用程序以发现安全性和质量问题的系统