掌桥专利:专业的专利平台
掌桥专利
首页

分布式消息服务节点CPU性能故障自恢复方法及装置

文献发布时间:2023-06-29 06:30:04


分布式消息服务节点CPU性能故障自恢复方法及装置

技术领域

本公开涉及分布式技术领域,具体涉及自动化运维技术领域,更具体地涉及一种分布式消息服务节点CPU性能故障自恢复方法、装置、设备、存储介质和程序产品。

背景技术

Kafka分布式消息服务在金融科技领域及大数据领域应用极为广泛,很多业务应用依托于Kafka进行削峰填谷、日志监控、异步解耦等场景。在实际运行中对于Kafka分布式消息服务节点的性能要求非常严苛,但由于海量数据的流动性现状及业务场景的复杂多样性,经常会出现节点CPU性能异常的情况,而一旦CPU性能出现异常,则存在会影响Kafka集群对外服务能力的风险,严重时会导致集群服务下宕,无法进行消息传输。

目前在出现CPU性能异常故障时,首先通过人工收集所需报表进行分析,再推测可能的故障原因,再去通过推测的故障原因尝试修复故障的方式来应对该问题。

对于当前人工处理Kafka分布式消息服务节点的CPU性能异常故障问题的方案,在实际生产运行中,存在几个缺点:一是效率低,人工处理消费者故障时需要人工收集多个报表且逐一分析,需要的时效较长。二是准确性低,人工处理消费者故障完全依赖于人员技能成熟度,如由技能初阶的生产故障支持人员进行处理,较难定位出故障原因。三是人力投入大,在金融科技领域,海量消息必然会出现各种故障问题,如都依赖人力,则需要投入大量技能成熟的生产故障支持人员。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

鉴于上述问题,本公开提供了一种提高故障修复效率的分布式消息服务节点CPU性能故障自恢复方法、装置、设备、存储介质和程序产品。

根据本公开的第一个方面,提供了一种分布式消息服务节点CPU性能故障自恢复方法,所述方法包括:

响应于服务节点CPU性能故障检测器的故障报警操作,获取故障报警信息,其中,所述故障报警信息包括故障节点IP;

根据所述故障节点IP收集故障节点的系统性能数据报表;

对所述系统性能数据报表进行分析,以确定所述故障节点的故障类型;以及

根据所述故障类型执行对应的恢复策略以恢复所述故障节点。

根据本公开的实施例,所述系统性能数据报表包括操作系统性能指标文件、内存使用情况文件和活跃进程日志文件,所述对所述系统性能数据报表进行分析,以确定所述故障节点的故障类型包括:

若确定所述操作系统性能指标文件中的连接数大于第一预设阈值,则确定所述故障类型为第一系统性能故障;

若确定所述操作系统性能指标文件中的网络流量大于第二预设阈值,则确定所述故障类型为第二系统性能故障;

若确定所述操作系统性能指标文件中的操作系统句柄数大于第三预设阈值,则确定所述故障类型为第三系统性能故障;

若确定内存使用情况文件的内存使用率大于第四预设阈值,则确定所述故障类型为第四系统性能故障;以及

若确定所述活跃进程日志文件中当前CPU使用率前三的进程存在报错信息,则确定所述故障类型为第五系统性能故障。

根据本公开的实施例,所述根据所述故障类型执行对应的恢复策略以恢复所述故障节点包括:

若确定所述故障类型为第一系统性能故障,启动连接请求限流开关,将请求的连接数限流至第一指定阈值;

若确定所述故障类型为第二系统性能故障,启动网络限流开关,将网络流量限流在第二指定阈值;

若确定所述故障类型为第三系统性能故障,启动句柄优化限流开关,将目前允许的单个进行句柄数上限降至第三指定阈值;

若确定所述故障类型为第四系统性能故障,对所述故障节点进行扩内存操作;以及

若确定所述故障类型为第五系统性能故障,启动进程管理器对异常进程进行隔离。

根据本公开的实施例,所述故障报警信息还包括故障节点所属集群标识信息,所述方法还包括:

若确定所述故障节点的故障类型为非系统性能故障,则启动服务端节点故障分析器以确定服务端节点故障类型;

根据所述服务端节点故障类型执行对应的恢复策略以恢复所述故障节点。

根据本公开的实施例,所述启动服务端节点故障分析器以确定服务端节点故障类型包括:

获取故障节点所属集群的节点数、所有节点的消息副本文件个数、故障节点所属集群主题分区数和消息流入流出监控文件;

若确定所述故障节点的消息副本文件个数大于其他节点的消息副本文件个数,则确定所述服务端节点故障类型为第一服务端节点故障;

若确定故障节点上的消息流入流出量异常,则确定所述服务端节点故障类型为第二服务端节点故障;以及

若确定分区设置异常,则确定所述服务端节点故障类型为第三服务端节点故障。

根据本公开的实施例,所述根据所述服务端节点故障类型执行对应的恢复策略以恢复所述故障节点包括:

若确定所述服务端节点故障类型为第一服务端节点故障,启动集群内节点自动负载均衡开关,将故障节点上的指定个数副本迁移至集群内其他空闲节点;

若确定所述服务端节点故障类型为第二服务端节点故障,启动消息流量限流开关,将消息流量降至预设时间内消息流量平均值;以及

若确定所述服务端节点故障类型为第三服务端节点故障,对异常分区进行动态扩容操作直至满足分区设置要求。

根据本公开的实施例,所述报警信息还包括集群归属应用和应用信息,所述方法还包括:

若确定所述故障节点的故障类型为非服务端节点故障,则启动生产者故障分析器以确定生产者运行故障类型;

根据所述生产者运行故障类型执行对应的恢复策略以恢复所述故障节点。

根据本公开的实施例,所述启动生产者故障分析器以确定生产者运行故障类型包括;

收集生产者客户端上送到服务端的第一客户端信息,所述第一客户端信息包括生产者对象新建次数、生产者配置参数值和生产者客户端日志;

若确定所述生产者对象新建次数大于第五预设阈值,则确定所述生产者运行故障类型为第一生产者运行故障;

若确定所述生产者配置参数值中有批量发送块低于第六预设阈值,则确定所述生产者运行故障类型为第二生产者运行故障;以及

若确定所述生产者客户端日志中近故障发生前预设时间内存在异常报错信息,则确定所述生产者运行故障类型为第三生产者运行故障。

根据本公开的实施例,所述根据所述生产者运行故障类型执行对应的恢复策略以恢复所述故障节点包括:

若确定所述生产者运行故障类型为第一生产者运行故障,启动生产者连接请求限流开关以限制所述生产者对象频繁新建对象;

若确定所述生产者运行故障类型为第二生产者运行故障,则自动修改上游生产者的批量发送块大小为默认值,并中断生产者连接,重启生产者客户端生效新的批量发送块参数;以及

若确定所述生产者运行故障类型为第三生产者运行故障,则中断生产者连接,重启生产者客户端。

根据本公开的实施例,所述方法还包括:

若确定所述故障节点的故障类型为非生产者运行故障,则启动消费者故障分析器以确定消费者运行故障类型;

根据所述消费者运行故障类型执行对应的恢复策略以恢复所述故障节点。

根据本公开的实施例,所述启动消费者故障分析器以确定消费者运行故障类型包括:

收集消费者客户端上送到服务端的第二客户端信息,所述第二客户端信息包括消费者对象新建次数、消费者配置参数值和消费者客户端日志;

若确定所述消费者对象新建次数大于第七预设阈值,则确定所述消费者运行故障类型为第一消费者运行故障;

若确定所述消费者配置参数值中poll拉取消息的时间大于预设的拉取间隔等待时间,则确定所述消费者运行故障类型为第二消费者运行故障;以及

若确定所述消费者客户端日志中近故障发生前预设时间内存在异常报错信息,所述消费者运行故障类型为第三消费者运行故障。

根据本公开的实施例,所述根据所述消费者运行故障类型执行对应的恢复策略以恢复所述故障节点包括:

若确定所述消费者运行故障类型为第一消费者运行故障,启动消费者连接请求限流开关以限制所述消费者对象频繁新建对象;

若确定所述消费者运行故障类型为第二消费者运行故障,则自动修改poll拉取消息时间,并中断消费者连接,重启消费者客户端生效新的poll拉取消息时间参数;以及

若确定所述消费者运行故障类型为第三消费者运行故障,则中断消费者连接,重启消费者客户端。

根据本公开的实施例,在获取故障报警信息之后,还包括:

根据所述故障节点的CPU个数进行CPU扩容操作。

根据本公开的实施例,在执行对应的恢复策略之后,还包括:

启动健康检查器对故障节点进行健康检查。

本公开的第二方面提供了一种分布式消息服务节点CPU性能故障自恢复装置,所述装置包括:

第一获取模块,用于响应于服务节点CPU性能故障检测器的故障报警操作,获取故障报警信息,其中,所述故障报警信息包括故障节点IP;

第二获取模块,用于根据所述故障节点IP收集系统性能数据报表;

第一故障分析模块,用于对所述系统性能数据报表进行分析,以确定所述故障节点的故障类型;以及

第一故障恢复模块,用于根据所述故障类型执行对应的恢复策略以恢复所述故障节点。

根据本公开的实施例,所述系统性能数据报表包括操作系统性能指标文件、内存使用情况文件和活跃进程日志文件,所述第一故障分析模块包括:第一确定子模块、第二确定子模块、第三确定子模块、第四确定子模块和第五确定子模块。

第一确定子模块,用于若确定所述操作系统性能指标文件中的连接数大于第一预设阈值,则确定所述故障类型为第一系统性能故障;

第二确定子模块,用于若确定所述操作系统性能指标文件中的网络流量大于第二预设阈值,则确定所述故障类型为第二系统性能故障;

第三确定子模块,用于若确定所述操作系统性能指标文件中的操作系统句柄数大于第三预设阈值,则确定所述故障类型为第三系统性能故障;

第四确定子模块,用于若确定内存使用情况文件的内存使用率大于第四预设阈值,则确定所述故障类型为第四系统性能故障;以及

第五确定子模块,用于若确定所述活跃进程日志文件中当前CPU使用率前三的进程存在报错信息,则确定所述故障类型为第五系统性能故障。

根据本公开的实施例,所述第一故障恢复模块包括:连接数限流子模块、网络流量限制子模块、句柄优化限流子模块、内存扩容子模块和进程管理子模块。

连接数限流子模块,用于若确定所述故障类型为第一系统性能故障,启动连接请求限流开关,将请求的连接数限流至第一指定阈值;

网络流量限制子模块,用于若确定所述故障类型为第二系统性能故障,启动网络限流开关,将网络流量限流在第二指定阈值;

句柄优化限流子模块,用于若确定所述故障类型为第三系统性能故障,启动句柄优化限流开关,将目前允许的单个进行句柄数上限降至第三指定阈值;

内存扩容子模块,用于若确定所述故障类型为第四系统性能故障,对所述故障节点进行扩内存操作;以及

进程管理子模块,用于若确定所述故障类型为第五系统性能故障,启动进程管理器对异常进程进行隔离。

根据本公开的实施例,所述故障报警信息还包括故障节点所属集群标识信息,所述装置还包括:第二故障分析模块和第二故障恢复模块。

第二故障分析模块,用于若确定所述故障节点的故障类型为非系统性能故障,则启动服务端节点故障分析器以确定服务端节点故障类型;

第二故障恢复模块,用于根据所述服务端节点故障类型执行对应的恢复策略以恢复所述故障节点。

根据本公开的实施例,所述第二故障分析模块包括:第一获取子模块、第六确定子模块、第七确定子模块和第八确定子模块。

第一获取子模块,用于获取故障节点所属集群的节点数、所有节点的消息副本文件个数、故障节点所属集群主题分区数和消息流入流出监控文件;

第六确定子模块,用于若确定所述故障节点的消息副本文件个数大于其他节点的消息副本文件个数,则确定所述服务端节点故障类型为第一服务端节点故障;

第七确定子模块,用于若确定故障节点上的消息流入流出量异常,则确定所述服务端节点故障类型为第二服务端节点故障;以及

第八确定子模块,用于若确定分区设置异常,则确定所述服务端节点故障类型为第三服务端节点故障。

根据本公开的实施例,所述第二故障恢复模块包括:负载均衡子模块、消息流量限流子模块和分区扩容子模块。

负载均衡子模块,用于若确定所述服务端节点故障类型为第一服务端节点故障,启动集群内节点自动负载均衡开关,将故障节点上的指定个数副本迁移至集群内其他空闲节点;

消息流量限流子模块,用于若确定所述服务端节点故障类型为第二服务端节点故障,启动消息流量限流开关,将消息流量降至预设时间内消息流量平均值;以及

分区扩容子模块,用于若确定所述服务端节点故障类型为第三服务端节点故障,对异常分区进行动态扩容操作直至满足分区设置要求。

根据本公开的实施例,所述报警信息还包括集群归属应用和应用信息,所述装置还包括:第三故障分析模块和第三故障恢复模块。

第三故障分析模块,用于若确定所述故障节点的故障类型为非服务端节点故障,则启动生产者故障分析器以确定生产者运行故障类型;

第三故障恢复模块,根据所述生产者运行故障类型执行对应的恢复策略以恢复所述故障节点。

根据本公开的实施例,所述第三故障分析模块包括:第二获取子模块、第九确定子模块、第十确定子模块和第十一确定子模块。

第二获取子模块,用于收集生产者客户端上送到服务端的第一客户端信息,所述第一客户端信息包括生产者对象新建次数、生产者配置参数值和生产者客户端日志;

第九确定子模块,用于若确定所述生产者对象新建次数大于第五预设阈值,则确定所述生产者运行故障类型为第一生产者运行故障;

第十确定子模块,用于若确定所述生产者配置参数值中有批量发送块低于第六预设阈值,则确定所述生产者运行故障类型为第二生产者运行故障;以及

第十一确定子模块,用于若确定所述生产者客户端日志中近故障发生前预设时间内存在异常报错信息,则确定所述生产者运行故障类型为第三生产者运行故障。

根据本公开的实施例,所述第三故障恢复模块包括:生产者连接请求限流子模块、生产者参数配置子模块和生产者客户端重启子模块。

生产者连接请求限流子模块,用于若确定所述生产者运行故障类型为第一生产者运行故障,启动生产者连接请求限流开关以限制所述生产者对象频繁新建对象;

生产者参数配置子模块,用于若确定所述生产者运行故障类型为第二生产者运行故障,则自动修改上游生产者的批量发送块大小为默认值,并中断生产者连接,重启生产者客户端生效新的批量发送块参数;以及

生产者客户端重启子模块,用于若确定所述生产者运行故障类型为第三生产者运行故障,则中断生产者连接,重启生产者客户端。

根据本公开的实施例,所述装置还包括:第四故障分析模块和第四故障恢复模块。

第四故障分析模块,用于若确定所述故障节点的故障类型为非生产者运行故障,则启动消费者故障分析器以确定消费者运行故障类型;

第四故障恢复模块,用于根据所述消费者运行故障类型执行对应的恢复策略以恢复所述故障节点。

根据本公开的实施例,所述第四故障分析模块包括:第三获取子模块、第十二确定子模块、第十三确定子模块和第十四确定子模块。

第三获取子模块,用于收集消费者客户端上送到服务端的第二客户端信息,所述第二客户端信息包括消费者对象新建次数、消费者配置参数值和消费者客户端日志;

第十二确定子模块,用于若确定所述消费者对象新建次数大于第七预设阈值,则确定所述消费者运行故障类型为第一消费者运行故障;

第十三确定子模块,用于若确定所述消费者配置参数值中poll拉取消息的时间大于预设的拉取间隔等待时间,则确定所述消费者运行故障类型为第二消费者运行故障;以及

第十四确定子模块,用于若确定所述消费者客户端日志中近故障发生前预设时间内存在异常报错信息,所述消费者运行故障类型为第三消费者运行故障。

根据本公开的实施例,所述第四故障恢复模块包括:消费者连接请求限流子模块、消费者参数配置子模块和消费者客户端重启子模块。

消费者连接请求限流子模块,用于若确定所述消费者运行故障类型为第一消费者运行故障,启动消费者连接请求限流开关以限制所述消费者对象频繁新建对象;

消费者参数配置子模块,用于若确定所述消费者运行故障类型为第二消费者运行故障,则自动修改poll拉取消息时间,并中断消费者连接,重启消费者客户端生效新的poll拉取消息时间参数;以及

消费者客户端重启子模块,用于若确定所述消费者运行故障类型为第三消费者运行故障,则中断消费者连接,重启消费者客户端。

根据本公开的实施例,还包括:节点CPU性能故障应急处理模块。

节点CPU性能故障应急处理模块,用于根据所述故障节点的CPU个数进行CPU扩容操作。

根据本公开的实施例,还包括:健康检查模块。

健康检查模块,用于启动健康检查器对故障节点进行健康检查。

本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述分布式消息服务节点CPU性能故障自恢复方法。

本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述分布式消息服务节点CPU性能故障自恢复方法。

本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述分布式消息服务节点CPU性能故障自恢复方法。

通过本公开的实施例提供的一种分布式消息服务节点CPU性能故障自恢复方法,当接收到故障报警信息时,根据故障报警信息收集故障节点的系统性能数据报表,对该报表进行分析,确定故障节点的故障类型,进而根据故障类型确定对应的恢复策略,执行对应的恢复策略以恢复故障节点。相较于相关技术,本公开提供的分布式消息服务节点CPU性能故障自恢复方法由于能自动分析故障节点的故障类型并自动执行对应的恢复策略,加速了消息节点CPU故障异常的处理进程,提升生产环境出现性能故障的处理效率。

附图说明

通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:

图1示意性示出了根据本公开实施例的分布式消息服务节点CPU性能故障自恢复方法、装置、设备、存储介质和程序产品的应用场景图;

图2a示意性示出了相关技术中分布式消息服务集群的架构图;

图2b示意性示出了根据本公开实施例提供的分布式消息服务节点CPU性能故障自恢复系统的架构图;

图3示意性示出了根据本公开实施例提供的一种分布式消息服务节点CPU性能故障自恢复方法的流程图;

图4示意性示出了根据本公开实施例提供的对所述系统性能数据报表进行分析以确定所述故障节点的故障类型的方法的流程图;

图5示意性示出了根据本公开实施例提供的根据所述故障类型执行对应的恢复策略以恢复所述故障节点的方法的流程图;

图6a示意性示出了根据本公开实施例提供的服务端节点故障类型分析方法的流程图;

图6b示意性示出了根据本公开实施例提供的服务端节点故障类型的确定方法的流程图;

图6c示意性示出了根据本公开实施例提供的根据服务端节点故障类型确定对应恢复策略的方法的流程图;

图7a示意性示出了根据本公开实施例提供的生产者运行故障类型分析方法的流程图;

图7b示意性示出了根据本公开实施例提供的生产者运行故障类型的确定方法的流程图;

图7c示意性示出了根据本公开实施例提供的根据所述生产者运行故障类型执行对应的恢复策略的方法的流程图;

图8a示意性示出了根据本公开实施例提供的消费者运行故障类型分析方法的流程图;

图8b示意性示出了根据本公开实施例提供的消费者运行故障类型的确定方法的流程图;

图8c示意性示出了根据本公开实施例提供的根据所述消费者运行故障类型执行对应的恢复策略的方法的流程图;

图9示意性示出了根据本公开实施例的一种分布式消息服务节点CPU性能故障自恢复装置的结构框图;以及

图10示意性示出了根据本公开实施例的适于实现分布式消息服务节点CPU性能故障自恢复方法的电子设备的方框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。

首先对本公开实施例出现的名词术语进行解释:

消息:Kafka中的数据单元被称为消息,也称为记录,可以把消息看作数据库表某一行的记录。

分布式消息服务:是一种基于高可用分布式集群技术的消息中间件服务,提供了可靠且可扩展的托管消息队列,用于收发消息和存储消息。

Kafka分布式消息节点:Kafka是一种消息引擎系统,一个kafka集群由多个kafka消息节点组成,节点数可分布式部署,按照实际消息规模及性能要求进行动态伸缩管理。

主题:消息的种类称为主题,相当于数据库中的表,对消息进行分类。

分区:主题可以被分为若干个分区,同一主题的分区可以不在一个机器上,有可能部署在多个机器上,由此实现kafka的伸缩性,单一主题中的分区有序。

生产者:向主题发布消息的客户端应用程序称为生产者,用于持续不断的向某个主题发送消息。

消费者:订阅主题消息的客户端应用程序称为消费者,用于处理生产者产生的消息。

CPU性能:CPU中央处理器(CentralProcessingUnit,CPU),CPU性能反映对应服务器节点的性能。

目前在出现CPU性能异常故障时,首先通过人工收集所需报表进行分析,再推测可能的故障原因,再去通过推测的故障原因尝试修复故障的方式来应对该问题。

对于当前人工处理Kafka分布式消息服务节点的CPU性能异常故障问题的方案,在实际生产运行中,存在几个缺点:一是效率低,人工处理消费者故障时需要人工收集多个报表且逐一分析,需要的时效较长。二是准确性低,人工处理消费者故障完全依赖于人员技能成熟度,如由技能初阶的生产故障支持人员进行处理,较难定位出故障原因。三是人力投入大,在金融科技领域,海量消息必然会出现各种故障问题,如都依赖人力,则需要投入大量技能成熟的生产故障支持人员。

基于上述技术问题,本公开的实施例提供了一种分布式消息服务节点CPU性能故障自恢复方法,所述方法包括:响应于服务节点CPU性能故障检测器的故障报警操作,获取故障报警信息,其中,所述故障报警信息包括故障节点IP;根据所述故障节点IP收集故障节点的系统性能数据报表;对所述系统性能数据报表进行分析,以确定所述故障节点的故障类型;以及根据所述故障类型执行对应的恢复策略以恢复所述故障节点。

图1示意性示出了根据本公开实施例的分布式消息服务节点CPU性能故障自恢复方法、装置、设备、存储介质和程序产品的应用场景图。图2a示意性示出了相关技术中分布式消息服务集群的架构图。图2b示意性示出了根据本公开实施例提供的分布式消息服务节点CPU性能故障自恢复系统的架构图。

如图1所示,根据该实施例的应用场景100可以包括分布式消息服务节点CPU性能故障自恢复场景。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。

终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器105可以是节点CPU故障自恢复服务器,该服务器执行本公开实施例提供的分布式消息服务节点CPU性能故障自恢复的处理逻辑,当接收到服务节点CPU故障报警时,根据报警信息自动收集系统性能指标文件,根据分析系统性能指标文件判断故障节点的故障类型,根据确定的故障类型启动优化器自动执行对应的故障恢复策略,从而实现故障自恢复。

需要说明的是,本公开实施例所提供的分布式消息服务节点CPU性能故障自恢复方法一般可以由服务器105执行。相应地,本公开实施例所提供的分布式消息服务节点CPU性能故障自恢复装置一般可以设置于服务器105中。本公开实施例所提供的分布式消息服务节点CPU性能故障自恢复方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的分布式消息服务节点CPU性能故障自恢复装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

需要说明的是,本公开实施例确定的分布式消息服务节点CPU性能故障自恢复方法和装置可用于分布式技术领域,也可用于金融技术领域,还可用于除金融领域之外的任意领域,本公开实施例确定的分布式消息服务节点CPU性能故障自恢复方法和装置的应用领域不做限定。

为更好的理解本公开实施例提供的分布式消息服务节点CPU性能故障自恢复方法实现的技术原理,先对Kafka集群消息的生产、消费及监控管理进行说明。如图2a所示,S1为生产者客户端往Kafka消息集群发送消息。S2为Kafka分布式消息消息集群存放消息。S3为消费者客户端从Kafka消息集群消费拉取消息。S4为节点性能检测报警器监控kafka消息节点的性能情况,及时通过捕捉性能异常情况,如遇到异常情况,则报警并通知运维人员进行后续处理,待完成异常原因分析之后,根据不同的异常原因实施不同的策略,使消费恢复正常。在上述体系中,一旦CPU性能出现异常,则存在会影响Kafka集群对外服务能力的风险,严重时会导致集群服务下宕,无法进行消息传输。目前在出现CPU性能异常故障时,首先通过人工收集所需报表进行分析,再推测可能的故障原因,再去通过推测的故障原因尝试修复故障的方式来应对该问题,目前完全依赖人工处理的方式并不合理,且时效性太低,问题分析所需的技术能力要求太高,问题分析的流程复杂,面对金融科技领域类各种丰富的应用场景的海量数据流动传输需求,为更好的提供一流的平台运行支撑能力,这些问题亟待解决。

如图2b所示,本公开在图2a的基础上进行改造,将节点性能监测报警器改为Kafka分布式消息服务节点CPU性能异常自恢复系统。通过技术手段在生产运行环境放置CPU性能故障监测报警装置、故障原因定位装置、故障自恢复装置和健康检查装置处理执行本公开实施例提供的故障自恢复的处理逻辑。该系统集成节点CPU故障自动、故障报警、报表收集、报表解析、性能分析、故障自动处理、健康检查等功能,实现故障自恢复的目标。

以下将基于图1描述的场景和图2b所述的系统架构,通过图3~图8c本公开实施例的分布式消息服务节点CPU性能故障自恢复方法进行详细描述。

图3示意性示出了根据本公开实施例提供的一种分布式消息服务节点CPU性能故障自恢复方法的流程图。

如图3所示,该实施例的分布式消息服务节点CPU性能故障自恢复方法包括操作S210~操作S240,该方法可以由服务器或其他计算设备执行。

在操作S210,响应于服务节点CPU性能故障检测器的故障报警操作,获取故障报警信息。

根据本公开实施例,所述故障报警信息包括故障节点IP。

根据本公开实施例,根据所述故障节点的CPU个数进行CPU扩容操作。

一个示例中,服务节点CPU性能故障检测器预先设置CPU故障报警阈值,例如可设置%CPU=85%,一旦服务节点CPU性能故障报警器探测到CPU使用率超阈值,触发性能报警,将Kafka节点ip信息、节点所属集群标志、集群归属应用、应用信息等组成报警信息,并通过邮件、短信等方式进行报警。为降低对现有生产环境的影响,更有效的保障运行安全,启动节点CPU性能故障发生后的应急处理,即自动给报警节点进行扩CPU操作,按照直接扩容当前CPU个数的50%进行。比如该报警节点原为4个CPU内核配置,触发CPU使用率报警阈值后,扩容2个CPU内核配置,变为6个CPU内核配置。

在操作S220,根据所述故障节点IP收集故障节点的系统性能数据报表。

在操作S230,对所述系统性能数据报表进行分析,以确定所述故障节点的故障类型。

在操作S240,根据所述故障类型执行对应的恢复策略以恢复所述故障节点。

一个示例中,由于导致节点CPU故障的原因可能涉及多个方面,例如可能是系统性能故障,也可能是服务端节点故障,还可能是生产者端运行故障,甚至可能是消费者端运行故障。在识别到故障报警信息后,由于系统性能故障的发生概率在实际生产中较大,因此在本公开实施例中首先对系统性能故障进行分析,判断是否为系统性能故障问题。具体的,通过故障节点IP确定故障节点,获取该故障节点的系统性能数据报表,该系统性能数据报表记录的该故障节点故障前的一些运行性能指标,例如连接数、内存使用率、异常进程信息等等,对系统性能数据报表进行分析从而确定故障节点的故障类型,具体过程可参见图4所示的操作S231~操作S235。根据操作S230确定的具体的故障类型,分布式消息服务节点CPU性能异常自恢复系统预先设置有与故障类型对应的恢复策略,根据故障节点的故障类型自动确定对应的恢复策略,执行恢复策略实现故障的自动修复,无需人工介入,提高运维效率,减小服务节点故障带来的影响。

通过本公开的实施例提供的一种分布式消息服务节点CPU性能故障自恢复方法,当接收到故障报警信息时,根据故障报警信息收集故障节点的系统性能数据报表,对该报表进行分析,确定故障节点的故障类型,进而根据故障类型确定对应的恢复策略,执行对应的恢复策略以恢复故障节点。相较于相关技术,本公开提供的分布式消息服务节点CPU性能故障自恢复方法由于能自动分析故障节点的故障类型并自动执行对应的恢复策略,加速了消息节点CPU故障异常的处理进程,提升生产环境出现性能故障的处理效率。

下面将通过图4介绍本公开实施例中对所述系统性能数据报表进行分析的过程。图4示意性示出了根据本公开实施例提供的对所述系统性能数据报表进行分析以确定所述故障节点的故障类型的方法的流程图。如图4所示,操作S230包括操作S231~操作S235。

根据本公开的实施例,所述系统性能数据报表包括操作系统性能指标文件、内存使用情况文件和活跃进程日志文件。

在操作S231,若确定所述操作系统性能指标文件中的连接数大于第一预设阈值,则确定所述故障类型为第一系统性能故障;

在操作S232,若确定所述操作系统性能指标文件中的网络流量大于第二预设阈值,则确定所述故障类型为第二系统性能故障;

在操作S233,若确定所述操作系统性能指标文件中的操作系统句柄数大于第三预设阈值,则确定所述故障类型为第三系统性能故障;

在操作S234,若确定内存使用情况文件的内存使用率大于第四预设阈值,则确定所述故障类型为第四系统性能故障;以及

在操作S235,若确定所述活跃进程日志文件中当前CPU使用率前三的进程存在报错信息,则确定所述故障类型为第五系统性能故障。

一个示例中,收集故障节点的操作系统层面性能指标文件,并针对该文件进行分析,例如操作系统层面性能指标文件中显示连接数大于第一预设阈值(第一预设阈值可以是10000个),则判断为连接数过高引发的CPU性能故障问题;例如网络流程每秒高于第二预设阈值(第二预设阈值可以是200MB),则判断为网络流量过大引发的CPU性能故障问题;例如操作系统句柄数高于第三预设阈值(第三预设阈值例如可以是1000个),则判断问句柄数过多引发的CPU性能故障问题。对收集到的内存使用情况文件进行分析,例如内存使用率超过第三预设阈值(第三预设阈值例如可以是75%),则判断为内存使用过高引发的CPU故障问题。对收集的当前活跃进程日志文件进行分析,具体的,从日志文件中针对当前CPU使用率前三的进程进行分析,通过分析日志文件中是否存在报错信息定位异常线程,并判断为进程异常引发的CPU故障问题。

下面将通过图5介绍本公开实施例中根据系统性能故障类型执行对应恢复策略的过程。图5示意性示出了根据本公开实施例提供的根据所述故障类型执行对应的恢复策略以恢复所述故障节点的方法的流程图。如图5所示,操作S240包括操作S241~操作S245。

在操作S241,若确定所述故障类型为第一系统性能故障,启动连接请求限流开关,将请求的连接数限流至第一指定阈值。

在操作S242,若确定所述故障类型为第二系统性能故障,启动网络限流开关,将网络流量限流在第二指定阈值。

在操作S243,若确定所述故障类型为第三系统性能故障,启动句柄优化限流开关,将目前允许的单个进行句柄数上限降至第三指定阈值。

在操作S244,若确定所述故障类型为第四系统性能故障,对所述故障节点进行扩内存操作。

在操作S245,若确定所述故障类型为第五系统性能故障,启动进程管理器对异常进程进行隔离。

一个示例中,当确定故障类型为第一系统性能故障时,即连接数过高问题,则启动连接请求限流开关,将目前的请求的连接数限流简直第一指定阈值(例如第一指定阈值可以是8000),超过的连接请求则存在连接池等待有资源分配。当确定故障类型为第二系统性能故障时,即网络流量过高问题,则启动网络限流开关,将目前的网络流量限流在第二指定阈值内(第二指定阈值例如可以是120MB),高于该阈值的网络流量则等待有网络资源再以此发送。当确定故障类型为第三系统性能故障时,即操作系统句柄数过高问题,则启动句柄优化限流开关,将目前允许的单个进行句柄数上限降至第三指定阈值。若确定所述故障类型为第四系统性能故障,即内存使用率过高,则对故障节点进行扩内存操作。若确定所述故障类型为第五系统性能故障,即存在异常线程导致服务节点CPU故障,则启动进程管理器对异常进程进行隔离。

经过上述分析若判断不是系统性能故障问题,则启动服务端节点故障分析器继续进行分析,判断是否为服务端节点故障。图6a示意性示出了根据本公开实施例提供的服务端节点故障类型分析方法的流程图,图6b示意性示出了根据本公开实施例提供的服务端节点故障类型的确定方法的流程图,图6c示意性示出了根据本公开实施例提供的根据服务端节点故障类型确定对应恢复策略的方法的流程图。如图6a所示,包括操作S310~操作S320。

在操作S310,若确定所述故障节点的故障类型为非系统性能故障,则启动服务端节点故障分析器以确定服务端节点故障类型。

如图6b所示,操作S310包括操作S311~操作S314。

在操作S311,获取故障节点所属集群的节点数、所有节点的消息副本文件个数、故障节点所属集群主题分区数和消息流入流出监控文件;

在操作S312,若确定所述故障节点的消息副本文件个数大于其他节点的消息副本文件个数,则确定所述服务端节点故障类型为第一服务端节点故障。

在操作S313,若确定故障节点上的消息流入流出量异常,则确定所述服务端节点故障类型为第二服务端节点故障。

在操作S314,若确定分区设置异常,则确定所述服务端节点故障类型为第三服务端节点故障。

一个示例中,启动服务端节点故障分析器,首先计算计算故障节点所属的Kafka集群的所有节点的消息副本文件个数,比对是否故障节点上的消息副本文件个数要高于其他节点,如明显高于其余节点(15%为判断范围),则判断为节点负载不均导致的CPU故障问题,即第一服务端节点故障。其次,获取消息流入流出量监控文件,比对是否故障节点上的消息流入流出量出现瞬时冲高,如明显高于2小时内平均值的三倍,则判断为消息流量异常导致的CPU故障问题,即第二服务端节点故障。最后,计算该集群上所有Topic主题的分区数是否为节点数的整数倍,如出现不为整数倍的情况,则判断为分区设置不合理导致的CPU故障问题,即第三服务端节点故障。

在操作S320,根据所述服务端节点故障类型执行对应的恢复策略以恢复所述故障节点。

如图6c所示,操作S320包括操作S321~操作S323。

在操作S321,若确定所述服务端节点故障类型为第一服务端节点故障,启动集群内节点自动负载均衡开关,将故障节点上的指定个数副本迁移至集群内其他空闲节点。

在操作S322,若确定所述服务端节点故障类型为第二服务端节点故障,启动消息流量限流开关,将消息流量降至预设时间内消息流量平均值。

在操作S323,若确定所述服务端节点故障类型为第三服务端节点故障,对异常分区进行动态扩容操作直至满足分区设置要求。

一个示例中,在确定服务端节点故障类型之后,启动服务端节点优化器,根据原因类型进行不同的自动优化处理。当确定所述服务端节点故障类型为第一服务端节点故障,即节点负载不均问题,则启动集群内节点自动负载均衡开关,将故障节点上的指定个数副本迁移至集群内其他空闲节点。迁移的副本个数的数目参考公示计算:迁移的副本个数=(故障节点副本个数-集群节点平均副本个数)/节点个数。

一个示例中,当确定所述服务端节点故障类型为第二服务端节点故障,即消息流量异常导致的CPU故障问题,则启动消息流量限流开关,将消息流量降至预设时间内消息流量平均值,例如2小时内消息流量平均值,并邮件通知集群的上下游消息流量限流事件。

一个示例中,当确定所述服务端节点故障类型为第三服务端节点故障,即集群上Topic分区存在不合理问题(异常分区),则定位不合理分区设置的具体topic名称,将该topic的分区进行动态扩容,至满足分区数为节点数的整数倍的要求。

若判断不是服务端节点性能故障问题,则启动生产者故障分析器继续进行分析,判断是否为生产者运行故障。图7a示意性示出了根据本公开实施例提供的生产者运行故障类型分析方法的流程图,图7b示意性示出了根据本公开实施例提供的生产者运行故障类型的确定方法的流程图,图7c示意性示出了根据本公开实施例提供的根据所述生产者运行故障类型执行对应的恢复策略的方法的流程图。如图7a所示,包括操作S410~操作S420。

在操作S410,若确定所述故障节点的故障类型为非服务端节点故障,则启动生产者故障分析器以确定生产者运行故障类型。

如图7b所示,操作S410包括操作S411~操作S414。

在操作S411,收集生产者客户端上送到服务端的第一客户端信息。

根据本公开的实施例,所述第一客户端信息包括生产者对象新建次数、生产者配置参数值和生产者客户端日志。

在操作S412,若确定所述生产者对象新建次数大于第五预设阈值,则确定所述生产者运行故障类型为第一生产者运行故障。

在操作S413,若确定所述生产者配置参数值中有批量发送块低于第六预设阈值,则确定所述生产者运行故障类型为第二生产者运行故障。

在操作S414,若确定所述生产者客户端日志中近故障发生前预设时间内存在异常报错信息,则确定所述生产者运行故障类型为第三生产者运行故障。

一个示例中,启动生产者故障分析器启动,收集生产者客户端上送到服务端的第一客户端信息,具体包括生产者对象新建次数、生产者配置参数值和生产者客户端日志,其中生产者配置参数值包括批量发送块大小值。对第一客服端信息进行分析,如果生产者对象新建次数大于第五预设阈值(第五预设阈值可以是每秒10个),则表征当前新建对象过于频繁,则判断为生产者对象使用不当导致的CPU故障问题,确定所述生产者运行故障类型为第一生产者运行故障。

一个示例中,如果生产者配置的参数中有批量发送块低于第六预设阈值(Kafka默认16KB为一批次发送一次消息,最低阈值设置为1KB),则判断为批量不合理导致的CPU故障问题,确定所述生产者运行故障类型为第二生产者运行故障。

一个示例中,如果确定生产者客户端日志中近故障发生前5分钟有ERROR异常报错信息,则判断为生产者客户端异常导致的CPU故障问题。确定所述生产者运行故障类型为第三生产者运行故障。

在操作S420,根据所述生产者运行故障类型执行对应的恢复策略以恢复所述故障节点。

如图7c所示,操作S420包括操作S421~操作S423。

在操作S421,若确定所述生产者运行故障类型为第一生产者运行故障,启动生产者连接请求限流开关以限制所述生产者对象频繁新建对象。

在操作S422,若确定所述生产者运行故障类型为第二生产者运行故障,则自动修改上游生产者的批量发送块大小为默认值,并中断生产者连接,重启生产者客户端生效新的批量发送块参数。

在操作S423,若确定所述生产者运行故障类型为第三生产者运行故障,则中断生产者连接,重启生产者客户端。

一个示例中,在确定了生产者运行故障类型之后,启动生产者优化器,根据原因类型进行不同的自动优化处理。当确定故障类型为第一生产者运行故障时,即确定故障为生产者对象使用不当问题,则启动生产者连接请求限流开关,限制该生产者对象频繁新建对象出现连接请求过高,并邮件通知对应上游应用相关问题。当确定故障类型为第二生产者运行故障时,即确定故障为批量不合理问题,则自动修改上游生产者的批量发送块大小为默认值,并中断生产者连接,重启生产者客户端生效新的批量发送快参数,邮件通知上游应用相关问题。当确定故障类型为第三生产者运行故障时,即确定为生产客户端异常问题,则中断生产者连接,重启生产者客户端,邮件通知上游应用相关问题。

若判断不是生产者运行故障问题,则启动消费者故障分析器继续进行分析,判断是否为消费者运行故障。图8a示意性示出了根据本公开实施例提供的消费者运行故障类型分析方法的流程图,图8b示意性示出了根据本公开实施例提供的消费者运行故障类型的确定方法的流程图,图8c示意性示出了根据本公开实施例提供的根据所述消费者运行故障类型执行对应的恢复策略的方法的流程图。如图8a所示,包括操作S510~操作S520。

在操作S510,若确定所述故障节点的故障类型为非生产者运行故障,则启动消费者故障分析器以确定消费者运行故障类型。

如图8b所示,操作S510包括操作S511~操作S514。

在操作S511,收集消费者客户端上送到服务端的第二客户端信息。

根据本公开的实施例,所述第二客户端信息包括消费者对象新建次数、消费者配置参数值和消费者客户端日志。

在操作S512,若确定所述消费者对象新建次数大于第七预设阈值,则确定所述消费者运行故障类型为第一消费者运行故障。

在操作S513,若确定所述消费者配置参数值中poll拉取消息的时间大于预设的拉取间隔等待时间,则确定所述消费者运行故障类型为第二消费者运行故障。

在操作S514,若确定所述消费者客户端日志中近故障发生前预设时间内存在异常报错信息,所述消费者运行故障类型为第三消费者运行故障。

一个示例中,启动消费者故障分析器启动,收集消费者客户端上送到服务端的第二客户端信息,第二客户端信息包括消费者对象新建次数、消费者配置参数值和消费者客户端日志。对第二客户端信息进行分析,具体包括:若确定消费者对象新建次数过于频繁,高于第七预设阈值(第七预设阈值例如可以是每秒10个),则判断为消费者对象使用不当导致的CPU故障问题,即确定所述消费者运行故障类型为第一消费者运行故障。如果消费配置的参数中有poll拉取消息的时间高于预设的拉取间隔等待时间,则判断为拉取消息时间不合理导致的CPU故障问题,即确定所述消费者运行故障类型为第二消费者运行故障。如果消费客户端日志中近故障发生前5分钟有ERROR异常报错信息,则判断为消费客户端异常导致的CPU故障问题,即确定所述消费者运行故障类型为第三消费者运行故障。

在操作S520,根据所述消费者运行故障类型执行对应的恢复策略以恢复所述故障节点。

如图8c所示,操作S520包括操作S521~操作S523。

在操作S521,若确定所述消费者运行故障类型为第一消费者运行故障,启动消费者连接请求限流开关以限制所述消费者对象频繁新建对象。

在操作S522,若确定所述消费者运行故障类型为第二消费者运行故障,则自动修改poll拉取消息时间,并中断消费者连接,重启消费者客户端生效新的poll拉取消息时间参数。

在操作S523,若确定所述消费者运行故障类型为第三消费者运行故障,则中断消费者连接,重启消费者客户端。

一个示例中,在确定消费者运行故障类型之后,启动消费者优化器进行自动优化处理。若确定所述消费者运行故障类型为第一消费者运行故障,即消费者对象使用不当问题,则启动消费者连接请求限流开关,限制该消费者对象频繁新建对象出现连接请求过高,并邮件通知对应下游应用相关问题。若确定所述消费者运行故障类型为第二消费者运行故障,即为poll拉取消息的时间不合理问题,则自动修改poll拉取消息时间,并中断消费者连接,重启消费者客户端生效新的poll拉取消息时间参数,邮件通知下游应用相关问题。若确定所述消费者运行故障类型为第三消费者运行故障,即为消费客户端异常问题,则中断消费者连接,重启消费者客户端,邮件通知下游应用相关问题

需要说明的是,在判断故障节点的故障类型时,本公开实施立体提供的故障类型判断分析顺序为先进行系统性能故障分析,再进行服务端节点故障分析,再进行生产者运行故障分析,最后进行消费者运行故障分析,这个顺序是基于实际生产中故障发生的概率确定的,在实际生产中,系统性能故障的概率>服务端节点故障的概率>生产者运行故障的概率>消费者运行故障的概率,这样保证故障分析的效率的同时减小系统资源的占用。可拓展的,对于故障节点故障类型的分析可以同时并行进行,即同时进行系统性能故障类型、服务端节点故障类型、生产者运行故障类型和消费者运行故障类型的分析,只是这样的方式会大量占用系统资源,造成冗余计算。当判断当前故障节点的故障类型为非系统性能故障时,也可以按照任意顺序依次执行对前述不同故障类型的分析。

根据本公开实施例,启动健康检查器对故障节点进行健康检查。

一个示例中,在前述各优化器执行对应故障恢复策略之后,启动节点健康检查器,进行该故障节点的CPU、内存、网络流量、连接数、系统文件句柄数等健康检查。判断所有系统性能指标是否健康,如性能指标健康合格,则结束本次故障自恢复操作,如果不合格,则重新执行操作S210~操作S240进行分析。如果经过判断确定故障节点的故障类型不属于系统故障问题、服务端节点故障问题、生产者运行故障、消费者运行故障问题中的任意一种,则将前述分析结论及所有相关日志文件存储路径以发送邮件或短信的形式发送者运维人员,以提醒当前故障运维人员需要人工介入处理。

基于上述分布式消息服务节点CPU性能故障自恢复方法,本公开还提供了一种分布式消息服务节点CPU性能故障自恢复装置。以下将结合图9对该装置进行详细描述。

图9示意性示出了根据本公开实施例的一种分布式消息服务节点CPU性能故障自恢复装置的结构框图。

如图9所示,该实施例的分布式消息服务节点CPU性能故障自恢复装置700包括第一获取模块710、第二获取模块720、故障分析模块730和故障恢复模块740。

第一获取模块710用于响应于服务节点CPU性能故障检测器的故障报警操作,获取故障报警信息,其中,所述故障报警信息包括故障节点IP。在一实施例中,第一获取模块710可以用于执行前文描述的操作S210,在此不再赘述。

第二获取模块720用于根据所述故障节点IP收集系统性能数据报表。在一实施例中,第二获取模块720可以用于执行前文描述的操作S220,在此不再赘述。

故障分析模块730用于对所述系统性能数据报表进行分析,以确定所述故障节点的故障类型。在一实施例中,故障分析模块730可以用于执行前文描述的操作S230,在此不再赘述。

故障恢复模块740用于根据所述故障类型执行对应的恢复策略以恢复所述故障节点。在一实施例中,故障恢复模块740可以用于执行前文描述的操作S240,在此不再赘述。

根据本公开的实施例,所述系统性能数据报表包括操作系统性能指标文件、内存使用情况文件和活跃进程日志文件,所述第一故障分析模块包括:第一确定子模块、第二确定子模块、第三确定子模块、第四确定子模块和第五确定子模块。

第一确定子模块,用于若确定所述操作系统性能指标文件中的连接数大于第一预设阈值,则确定所述故障类型为第一系统性能故障。在一实施例中,第一确定子模块可以用于执行前文描述的操作S231,在此不再赘述。

第二确定子模块,用于若确定所述操作系统性能指标文件中的网络流量大于第二预设阈值,则确定所述故障类型为第二系统性能故障。第二确定子模块可以用于执行前文描述的操作S232,在此不再赘述。

第三确定子模块,用于若确定所述操作系统性能指标文件中的操作系统句柄数大于第三预设阈值,则确定所述故障类型为第三系统性能故障。第三确定子模块可以用于执行前文描述的操作S233,在此不再赘述。

第四确定子模块,用于若确定内存使用情况文件的内存使用率大于第四预设阈值,则确定所述故障类型为第四系统性能故障。第四确定子模块可以用于执行前文描述的操作S234,在此不再赘述。

第五确定子模块,用于若确定所述活跃进程日志文件中当前CPU使用率前三的进程存在报错信息,则确定所述故障类型为第五系统性能故障。第五确定子模块可以用于执行前文描述的操作S235,在此不再赘述。

根据本公开的实施例,所述第一故障恢复模块包括:连接数限流子模块、网络流量限制子模块、句柄优化限流子模块、内存扩容子模块和进程管理子模块。

连接数限流子模块,用于若确定所述故障类型为第一系统性能故障,启动连接请求限流开关,将请求的连接数限流至第一指定阈值。连接数限流子模块可以用于执行前文描述的操作S241,在此不再赘述。

网络流量限制子模块,用于若确定所述故障类型为第二系统性能故障,启动网络限流开关,将网络流量限流在第二指定阈值。网络流量限制子模块可以用于执行前文描述的操作S242,在此不再赘述。

句柄优化限流子模块,用于若确定所述故障类型为第三系统性能故障,启动句柄优化限流开关,将目前允许的单个进行句柄数上限降至第三指定阈值。句柄优化限流子模块可以用于执行前文描述的操作S243,在此不再赘述。

内存扩容子模块,用于若确定所述故障类型为第四系统性能故障,对所述故障节点进行扩内存操作。内存扩容子模块可以用于执行前文描述的操作S244,在此不再赘述。

进程管理子模块,用于若确定所述故障类型为第五系统性能故障,启动进程管理器对异常进程进行隔离。进程管理子模块可以用于执行前文描述的操作S245,在此不再赘述。

根据本公开的实施例,所述故障报警信息还包括故障节点所属集群标识信息,所述装置还包括:第二故障分析模块和第二故障恢复模块。

第二故障分析模块,用于若确定所述故障节点的故障类型为非系统性能故障,则启动服务端节点故障分析器以确定服务端节点故障类型。第二故障分析模块可以用于执行前文描述的操作S310,在此不再赘述。

第二故障恢复模块,用于根据所述服务端节点故障类型执行对应的恢复策略以恢复所述故障节点。第二故障恢复模块可以用于执行前文描述的操作S320,在此不再赘述。

根据本公开的实施例,所述第二故障分析模块包括:第一获取子模块、第六确定子模块、第七确定子模块和第八确定子模块。

第一获取子模块,用于获取故障节点所属集群的节点数、所有节点的消息副本文件个数、故障节点所属集群主题分区数和消息流入流出监控文件;第一获取子模块可以用于执行前文描述的操作S311,在此不再赘述。

第六确定子模块,用于若确定所述故障节点的消息副本文件个数大于其他节点的消息副本文件个数,则确定所述服务端节点故障类型为第一服务端节点故障。第六确定子模块可以用于执行前文描述的操作S312,在此不再赘述。

第七确定子模块,用于若确定故障节点上的消息流入流出量异常,则确定所述服务端节点故障类型为第二服务端节点故障。第七确定子模块可以用于执行前文描述的操作S313,在此不再赘述。

第八确定子模块,用于若确定分区设置异常,则确定所述服务端节点故障类型为第三服务端节点故障。第八确定子模块可以用于执行前文描述的操作S314,在此不再赘述。

根据本公开的实施例,所述第二故障恢复模块包括:负载均衡子模块、消息流量限流子模块和分区扩容子模块。

负载均衡子模块,用于若确定所述服务端节点故障类型为第一服务端节点故障,启动集群内节点自动负载均衡开关,将故障节点上的指定个数副本迁移至集群内其他空闲节点;负载均衡子模块可以用于执行前文描述的操作S321,在此不再赘述。

消息流量限流子模块,用于若确定所述服务端节点故障类型为第二服务端节点故障,启动消息流量限流开关,将消息流量降至预设时间内消息流量平均值。消息限流子模块可以用于执行前文描述的操作S322,在此不再赘述。

分区扩容子模块,用于若确定所述服务端节点故障类型为第三服务端节点故障,对异常分区进行动态扩容操作直至满足分区设置要求。分区扩容子模块可以用于执行前文描述的操作S323,在此不再赘述。

根据本公开的实施例,所述报警信息还包括集群归属应用和应用信息,所述装置还包括:第三故障分析模块和第三故障恢复模块。

第三故障分析模块,用于若确定所述故障节点的故障类型为非服务端节点故障,则启动生产者故障分析器以确定生产者运行故障类型。第三故障分析模块可以用于执行前文描述的操作S410,在此不再赘述。

第三故障恢复模块,根据所述生产者运行故障类型执行对应的恢复策略以恢复所述故障节点。第三故障恢复模块可以用于执行前文描述的操作S420,在此不再赘述。

根据本公开的实施例,所述第三故障分析模块包括:第二获取子模块、第九确定子模块、第十确定子模块和第十一确定子模块。

第二获取子模块,用于收集生产者客户端上送到服务端的第一客户端信息,所述第一客户端信息包括生产者对象新建次数、生产者配置参数值和生产者客户端日志;第二获取子模块可以用于执行前文描述的操作S411,在此不再赘述。

第九确定子模块,用于若确定所述生产者对象新建次数大于第五预设阈值,则确定所述生产者运行故障类型为第一生产者运行故障。第九确定子模块可以用于执行前文描述的操作S412,在此不再赘述。

第十确定子模块,用于若确定所述生产者配置参数值中有批量发送块低于第六预设阈值,则确定所述生产者运行故障类型为第二生产者运行故障。第十确定子模块可以用于执行前文描述的操作S413,在此不再赘述。

第十一确定子模块,用于若确定所述生产者客户端日志中近故障发生前预设时间内存在异常报错信息,则确定所述生产者运行故障类型为第三生产者运行故障。第十一确定子模块可以用于执行前文描述的操作S414,在此不再赘述。

根据本公开的实施例,所述第三故障恢复模块包括:生产者连接请求限流子模块、生产者参数配置子模块和生产者客户端重启子模块。

生产者连接请求限流子模块,用于若确定所述生产者运行故障类型为第一生产者运行故障,启动生产者连接请求限流开关以限制所述生产者对象频繁新建对象。生产者连接请求限流子模块可以用于执行前文描述的操作S421,在此不再赘述。

生产者参数配置子模块,用于若确定所述生产者运行故障类型为第二生产者运行故障,则自动修改上游生产者的批量发送块大小为默认值,并中断生产者连接,重启生产者客户端生效新的批量发送块参数。生产者参数配置子模块可以用于执行前文描述的操作S422,在此不再赘述。

生产者客户端重启子模块,用于若确定所述生产者运行故障类型为第三生产者运行故障,则中断生产者连接,重启生产者客户端。生产者客户端重启子模块可以用于执行前文描述的操作S423,在此不再赘述。

根据本公开的实施例,所述装置还包括:第四故障分析模块和第四故障恢复模块。

第四故障分析模块,用于若确定所述故障节点的故障类型为非生产者运行故障,则启动消费者故障分析器以确定消费者运行故障类型。第四故障分析模块可以用于执行前文描述的操作S510,在此不再赘述。

第四故障恢复模块,用于根据所述消费者运行故障类型执行对应的恢复策略以恢复所述故障节点。第四故障恢复模块可以用于执行前文描述的操作S520,在此不再赘述。

根据本公开的实施例,所述第四故障分析模块包括:第三获取子模块、第十二确定子模块、第十三确定子模块和第十四确定子模块。

第三获取子模块,用于收集消费者客户端上送到服务端的第二客户端信息,所述第二客户端信息包括消费者对象新建次数、消费者配置参数值和消费者客户端日志。第三获取子模块可以用于执行前文描述的操作S511,在此不再赘述。

第十二确定子模块,用于若确定所述消费者对象新建次数大于第七预设阈值,则确定所述消费者运行故障类型为第一消费者运行故障。第十二确定子模块可以用于执行前文描述的操作S512,在此不再赘述。

第十三确定子模块,用于若确定所述消费者配置参数值中poll拉取消息的时间大于预设的拉取间隔等待时间,则确定所述消费者运行故障类型为第二消费者运行故障。第十三确定子模块可以用于执行前文描述的操作S513,在此不再赘述。

第十四确定子模块,用于若确定所述消费者客户端日志中近故障发生前预设时间内存在异常报错信息,所述消费者运行故障类型为第三消费者运行故障。第十四确定子模块可以用于执行前文描述的操作S514,在此不再赘述。

根据本公开的实施例,所述第四故障恢复模块包括:消费者连接请求限流子模块、消费者参数配置子模块和消费者客户端重启子模块。

消费者连接请求限流子模块,用于若确定所述消费者运行故障类型为第一消费者运行故障,启动消费者连接请求限流开关以限制所述消费者对象频繁新建对象。消费者连接请求限流子模块可以用于执行前文描述的操作S521,在此不再赘述。

消费者参数配置子模块,用于若确定所述消费者运行故障类型为第二消费者运行故障,则自动修改poll拉取消息时间,并中断消费者连接,重启消费者客户端生效新的poll拉取消息时间参数。消费者参数配置子模块可以用于执行前文描述的操作S522,在此不再赘述。

消费者客户端重启子模块,用于若确定所述消费者运行故障类型为第三消费者运行故障,则中断消费者连接,重启消费者客户端。消费者客户端重启子模块可以用于执行前文描述的操作S523,在此不再赘述。

根据本公开的实施例,还包括:节点CPU性能故障应急处理模块。

节点CPU性能故障应急处理模块,用于根据所述故障节点的CPU个数进行CPU扩容操作。

根据本公开的实施例,还包括:健康检查模块。

健康检查模块,用于启动健康检查器对故障节点进行健康检查。

根据本公开的实施例,第一获取模块710、第二获取模块720、故障分析模块730和故障恢复模块740中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块710、第二获取模块720、故障分析模块730和故障恢复模块740中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块710、第二获取模块720、故障分析模块730和故障恢复模块740中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图10示意性示出了根据本公开实施例的适于实现分布式消息服务节点CPU性能故障自恢复方法的电子设备的方框图。

如图10所示,根据本公开实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

在RAM 903中,存储有电子设备900操作所需的各种程序和数据。处理器901、ROM902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。

根据本公开的实施例,电子设备900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。电子设备900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。

本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的分布式消息服务节点CPU性能故障自恢复方法。

根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。

本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的分布式消息服务节点CPU性能故障自恢复方法。

在该计算机程序被处理器901执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。

在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分909被下载和安装,和/或从可拆卸介质911被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。

在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。

根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

相关技术
  • 一种联合文件系统故障自恢复方法及装置
  • 一种单节点故障下NAS服务的恢复方法及相关装置
  • 一种多节点服务器的节点供电方法及装置
  • CPU性能自监控方法及服务器
  • CPU系统深度休眠模式下的故障自恢复装置
  • CPU系统深度休眠模式下的故障自恢复装置
技术分类

06120116022772