CN116954898A - 内存溢出处理方法、设备、装置及计算机可读存储介质 - Google Patents
内存溢出处理方法、设备、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN116954898A CN116954898A CN202310896239.0A CN202310896239A CN116954898A CN 116954898 A CN116954898 A CN 116954898A CN 202310896239 A CN202310896239 A CN 202310896239A CN 116954898 A CN116954898 A CN 116954898A
- Authority
- CN
- China
- Prior art keywords
- memory
- back pressure
- water line
- books
- broker
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims abstract description 90
- 238000000034 method Methods 0.000 claims abstract description 85
- 230000008569 process Effects 0.000 claims abstract description 55
- 235000014510 cooky Nutrition 0.000 claims description 63
- 230000007246 mechanism Effects 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 34
- 238000012544 monitoring process Methods 0.000 claims description 14
- 238000004140 cleaning Methods 0.000 claims description 9
- 238000011084 recovery Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 19
- 230000002159 abnormal effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000001680 brushing effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Abstract
本发明公开了一种内存溢出处理方法、设备、装置及计算机可读存储介质,属于基础设施技术领域。该方法包括:存储节点Bookie接收反压组件发送的高内存水位线阈值;当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息;所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度。本发明根据Bookie的内存使用率和对应的内存水位线阈值的比较结果调整Broker的发送速度,旨在避免Bookie的内存溢出。
Description
技术领域
本发明涉及基础设施技术领域,尤其涉及内存溢出处理方法、设备、装置及计算机可读存储介质。
背景技术
在业务支撑系统中,通常使用云原生消息系统框架(Pulsar,一种系统框架),为业务支撑流计算提供业务处理平台的能力。单个Pulsar集群主要由以下部分组成:生产者,负责发送信息;消费者,负责消费信息;计算节点Broker,负责生产者和消费者之间的消息转发和负载均衡;Bookkeeper,由一个或多个存储节点组成,负责消息的持久化存储;管理节点Zookeeper,负责集群级别的配置和协调任务。
在相关技术中,业务支撑系统使用客户端创建生产者和消费者,其中,生产者将离线话单转化为话单消息写入队列,消费者订阅队列以读取话单消息,如此,业务支撑系统便与Broker建立实时通信,传输数据。
在突发洪峰流量时,为了提升话单消息的每秒处理的消息数和吞吐量,需要水平扩展客户端和Broker并发数,随后,这些并发的Broker会不断地向Bookkeeper组件中的Bookie发送读写请求。然而,Bookie的存储量有限,大量的读写操作会使得Bookie的内存使用率飙升,容易出现直接存储器内存不足的情况,最终导致进程异常退出,使得连接到Pulsar集群的业务支撑系统无法正常工作。
发明内容
本发明的主要目的在于提供一种内存溢出处理方法、设备、装置及计算机可读存储介质,旨在解决突发洪峰流量时,进程异常退出的技术问题。
为实现上述目的,本发明提供一种内存溢出处理方法,所述内存溢出处理方法包括以下步骤:
存储节点Bookie接收反压组件发送的高内存水位线阈值;
当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息;
所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度。
可选地,所述高内存水位线阈值包括第一内存水位线阈值和第二内存水位线阈值,所述第一内存水位线阈值大于所述第二内存水位线阈值,所述当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤包括:
当所述Bookie的内存使用率大于所述第一内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入停止信息;
所述Zookeeper在监听到所述停止信息的写入操作后,向计算节点Broker发送停止通知,以控制所述Broker停止发送;
当所述Bookie的内存使用率大于所述第二内存水位线阈值时,执行所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤。
可选地,所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度的步骤之后,包括:
所述Bookie接收所述反压组件发送的低内存水位线阈值;
当所述Bookie的内存使用率小于所述低内存水位线阈值时,所述Bookie删除所述Zookeeper的进程子目录中的所述反压信息;
所述Zookeeper在监听到所述反压信息的删除操作后,向所述Broker发送解除限速通知,以控制所述Broker恢复发送速度。
可选地,所述当所述Bookie的内存使用率小于所述低内存水位线阈值时,所述Bookie删除所述Zookeeper的进程子目录中的所述反压信息的步骤之前,包括:
当检测到所述Broker的发送速度降低时,所述Bookie将内存中的存储日志同步到磁盘中;
当检测到同步完成后,清理所述内存中的存储日志。
可选地,所述存储节点Bookie接收反压组件发送的高内存水位线阈值的步骤包括:
存储节点Bookie接收反压组件发送的高内存水位线阈值,以及反压机制的配置属性;
所述当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤包括:
当所述Bookie的内存使用率大于所述高内存水位线阈值,且所述配置属性满足预置条件时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息。
可选地,所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度的步骤之后,包括:
所述Bookie根据所述内存使用率和所述高内存水位线阈值,判定反压机制状态和反压机制结果;
统计所述内存使用率降至所述高内存水位线阈值所花费的处理时长,以及检测所述Broker的实时发送速度;
将所述反压机制状态、所述反压机制结果、所述处理时长和所述实时发送速度写入所述Zookeeper的内存溢出日志。
可选地,所述将所述反压机制状态、所述反压机制结果、所述处理时长和所述实时发送速度写入所述Zookeeper的内存溢出日志的步骤之后,包括:
所述Broker接收到RestAPI接口的查询指令后,从所述Zookeeper调取所述内存溢出日志;
将所述内存溢出日志转化为监控趋势图,并基于所述RestAPI接口,对外提供所述监控趋势图。
此外,为实现上述目的,本发明还提供一种内存溢出处理装置,所述装置包括:
Bookie,用于接收反压组件发送的高内存水位线阈值;
Bookie,用于当所述Bookie的内存使用率大于所述高内存水位线阈值时,向管理节点Zookeeper的进程子目录中写入反压信息;
Zookeeper,用于在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度。
此外,为实现上述目的,本发明还提供一种内存溢出处理设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内存溢出处理程序,所述内存溢出处理程序配置为实现所述的内存溢出处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有内存溢出处理程序,所述内存溢出处理程序被处理器执行时实现所述的内存溢出处理方法的步骤。
在本发明提供的一个技术方案中,在突发洪峰流量时,采用反压机制,对内存使用率和高内存水位线阈值进行比较,然后根据比较结果调整Broker的发送速度,以此将异常Bookie的内存使用率降低至正常范围内,避免内存溢出,保证进程正常运行。而且,对异常Bookie及时采取反压措施,能够减少对Bookie集群内的其它Bookie服务节点的影响,避免其他节点因为写入压力异常退出,导致整个Pulsar集群不可用。
附图说明
图1为本发明内存溢出处理方法第一实施例的流程示意图;
图2为本发明内存溢出处理方法第一实施例中的信令流程图;
图3为本发明内存溢出处理方法第二实施例的流程示意图;
图4为本发明内存溢出处理方法第三实施例的流程示意图;
图5为本发明内存溢出处理方法第三实施例中的信令流程图;
图6为本发明内存溢出处理方法第四实施例的流程示意图;
图7为本发明内存溢出处理方法第五实施例的流程示意图;
图8为本发明实施例方案涉及的硬件运行环境的内存溢出处理设备的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在突发洪峰流量时,为了提升话单消息的每秒处理的消息数和吞吐量,需要水平扩展客户端和Broker并发数,随后,这些并发的Broker会不断地向Bookkeeper组件中的Bookie发送读写请求。然而,Bookie的存储量有限,大量的读写操作会使得Bookie的内存使用率飙升,容易出现直接存储器内存不足(direct memory Out Of Memory,direct memoryOOM)的情况,最终导致进程异常退出。
而且,Broker不断地向Bookkeeper中的Bookie发送读写请求,当Bookie无法完成相应的存储操作时,Bookkeeper就不会再处理新的读写请求,这会导致Broker和Bookkeeper之间的数据通信出现瓶颈。
为解决上述问题,本方案比较Bookie的内存使用率和对应的内存水位线阈值,并根据比较结果调整Broker的发送速度,旨在将Bookie的内存使用率维持在正常范围内,避免内存溢出的情况。
为了更好的理解上述技术方案,下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种内存溢出处理方法,参照图1,图1为本发明一种内存溢出处理方法第一实施例的流程示意图。
本实施例中,所述内存溢出处理方法包括:
步骤S11:存储节点Bookie接收反压组件发送的高内存水位线阈值;
在单个Pulsar集群中,包括以下部分:计算节点Broker,负责生产者和消费者之间的消息转发和负载均衡;Bookkeeper,由一个或多个存储节点Bookie组成,负责消息的持久化存储;管理节点Zookeeper,负责集群级别的配置和协调任务。
可以理解的是,本方案采用反压机制,对Bookie的内存使用情况进行监控和优化,预先在反压组件中设置高内存水位线阈值,如整体内存容量的80%,一旦当前的内存使用率超出该阈值,则有内存溢出的风险。
可选地,参照图2,在规划的主机上启动Bookie服务,反压组件检测到Bookie处于启动状态后,发送高内存水位线阈值,相应地,Bookie接收高内存水位线阈值。
步骤S12:当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息;
可以理解的是,在规划的主机上启动Broker,与Bookie建立通信,Bookie接收Broker读写消息的请求。其中,针对写消息请求的基础处理流程为,Bookie将信息写入内存,然后定时定量将内存中的信息持久化存储入磁盘,再清理内存中的信息;针对读消息请求的基础处理流程为,Bookie直接从内存或磁盘中读取相关信息,然后发送至Broker。本方案,以处理写消息请求为示例,提供内存溢出处理方法,另外,在处理读消息请求时,如果存在内存溢出的风险,也可基于本方案原理进行类似处理,本实施例不作具体限定。
可选地,Bookie在与Broker进行通信的过程中,实时获取进程信息,进而确定当前的内存使用率,即当前正在使用的物理内存占总可用内存的比例。然后比较内存使用率和高内存水位线阈值,若内存使用率大于高内存水位线阈值,则说明当前时刻Bookie的内存使用程度过高,处于不健康状态,面临内存溢出高风险,故需要采用反压机制。
亦或是,获取当前的内存使用率和消息请求发送速率,进而计算未来一定时段内的预计内存使用率,若预计内存使用率大于高内存水位线阈值,则提前采用反压机制,以避免流量短时间内激增,反压机制的响应不及时。
进一步地,反压机制为,Bookie生成反压信息,并将反压信息写入Zookeeper的/backpressure目录下的/Bookie进程子目录,以便后续Zookeeper采取对应的反压策略。
步骤S13:所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度。
可以理解的是,Zookeeper设置有watch机制,相当于触发器,增删改查任一操作都会触发watch,以此监听存储的数据变化情况。
可选地,当Bookie向进程子目录中写入反压信息时,Zookeeper会监听到进程子目录的状态变更,即捕获相应的写入操作,此时,Zookeeper会向所有的Broker发送限速通知,以控制所有Broker降低发送速度。
亦或是,由于Bookie之间相互独立,可能出现Bookie1内存使用率为90%,而Bookie2内存使用率为30%,此时只需要对前者采用反压机制。因此,Bookie在向进程子目录中写入反压信息的同时,写入自身的标识号,相应地,后续Broker先确定,向该标识号的Bookie发送写消息请求的Broker,再针对性地发送限速通知,以控制特定Broker降低发送速度。
进一步地,Broker接收到限速通知后,获取Bookie中的内存清理速度,然后将发送速度调整至内存清理速度以下,以保证内存的写入速率小于清理速率,只有这样,内存的使用率才会不断下降。
步骤A:所述Bookie根据所述内存使用率和所述高内存水位线阈值,判定反压机制状态和反压机制结果;
步骤B:统计所述内存使用率降至所述高内存水位线阈值所花费的处理时长,以及检测所述Broker的实时发送速度;
步骤C:将所述反压机制状态、所述反压机制结果、所述处理时长和所述实时发送速度写入所述Zookeeper的内存溢出日志。
可以理解的是,为了便于运维人员进行管理,需要对Pulsar集群的情况进行相应记录。
可选地,Bookie会根据内存使用率和高内存水位线阈值的大小比较情况,以及内存使用率的变化情况,判定反压机制状态和反压机制结果,如反压机制状态为开启,反压机制结果为成功。另外,Bookie会统计内存使用率降至高内存水位线阈值所花费的处理时长,以及Broker的实时发送速度。
进一步地,在完后以上操作后,将上述多维指标记录写入Zookeeper的内存溢出日志,以便后续随时进行读取。
步骤D:所述Broker接收到RestAPI接口的查询指令后,从所述Zookeeper调取所述内存溢出日志;
步骤E:将所述内存溢出日志转化为监控趋势图,并基于所述RestAPI接口,对外提供所述监控趋势图。
可选地,Bookie对外提供RestAPI接口,运维人员通过RestAPI接口进行数据调用。相应地,当Broker接收到RestAPI接口的查询指令后,从Zookeeper调取内存溢出日志,然后通过Prometheus和Grafana,将内存溢出日志转化为监控趋势图,以图形化的方式进行展示。最后,通过RestAPI接口,对外提供监控趋势图,以将Bookie内存优化的过程和结果展示出来,提供告警通知的功能,也可以将上述内容以短信或邮件的方式通知运维人员,方便运维管理。
在本实施例提供的一个技术方案中,在突发洪峰流量时,采用反压机制,对内存使用率和高内存水位线阈值进行比较,然后根据比较结果调整Broker的发送速度,以此将异常Bookie的内存使用率降低至正常范围内,避免内存溢出,保证进程正常运行。而且,对异常Bookie及时采取反压措施,能够减少对Bookie集群内的其它Bookie服务节点的影响,避免其他节点因为写入压力异常退出,导致整个Pulsar集群不可用。
进一步的,参照图3,提出本发明内存溢出处理方法的第二实施例。基于上述图1所示的实施例,所述高内存水位线阈值包括第一内存水位线阈值和第二内存水位线阈值,所述第一内存水位线阈值大于所述第二内存水位线阈值,所述当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤包括:
步骤S21:当所述Bookie的内存使用率大于所述第一内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入停止信息;
步骤S22:所述Zookeeper在监听到所述停止信息的写入操作后,向计算节点Broker发送停止通知,以控制所述Broker停止发送;
步骤S23:当所述Bookie的内存使用率大于所述第二内存水位线阈值时,执行所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤。
可以理解的是,预先在反压组件中设置高内存水位线阈值时,由大到小划分为第一内存水位线阈值和第二内存水位线阈值,如95%、80%。
可选地,当Bookie的内存使用率大于第一内存水位线阈值时,说明紧急程度较高,如果Broker仍然发送请求,Bookie可能在短时间内出现内存溢出,此种情况下,需要直接采用停止处理。
进一步地,Bookie生成停止信息,并将停止信息写入Zookeeper的/backpressure目录下的/Bookie进程子目录,以便后续Zookeeper采取对应的停止策略。
更进一步地,Zookeeper会监听进程子目录的状态变更,即捕获停止信息的写入操作,之后,Zookeeper会向所有或特定的Broker发送停止通知,以控制Broker停止发送请求。
另外,当Bookie的内存使用率大于第二内存水位线阈值时,说明紧急程度较低,故只需要采用降速处理,因此,由Bookie向Zookeeper的进程子目录中写入反压信息,后续步骤同第一实施例,在此不再赘述。
在本实施例提供的一个技术方案中,划分第一内存水位线阈值和第二内存水位线阈值,分别对应停止处理和反压处理,以便后续操作过程中,根据Bookie内存使用率的实际情况,采用合适的处理方式,以合理平衡处理速率和内存状态。
进一步的,参照图4,提出本发明内存溢出处理方法的第三实施例。基于上述图1所示的实施例,所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度的步骤之后,包括:
步骤S31:所述Bookie接收所述反压组件发送的低内存水位线阈值;
可以理解的是,在突发洪峰流量时,为避免内存溢出,限制Broker的发送速度,在此之后,为提升消息的每秒处理的消息数和吞吐量,还需要对Broker的发送速度进行恢复。
可选地,预先在反压组件中设置低内存水位线阈值,如整体内存容量的50%,一旦当前的内存使用率低于该阈值,则说明内存处于健康状态,不存在内存溢出的风险。
可选地,参照图5,反压组件检测到Bookie进入限速状态之后,发送低内存水位线阈值,相应地,Bookie接收低内存水位线阈值。
步骤S32:当所述Bookie的内存使用率小于所述低内存水位线阈值时,所述Bookie删除所述Zookeeper的进程子目录中的所述反压信息;
步骤S33:所述Zookeeper在监听到所述反压信息的删除操作后,向所述Broker发送解除限速通知,以控制所述Broker恢复发送速度。
可选地,Bookie根据进程信息确定当前的内存使用率,和/或,根据当前的内存使用率和消息请求发送速率,确定预计内存使用率。若上述内存使用率小于低内存水位线阈值,则说明当前时刻Bookie的内存使用处于健康状态。
进一步地,Bookie确定Zookeeper的/backpressure目录下的/Bookie进程子目录,并将其中的反压信息进行删除。
更进一步地,当Bookie删除反压信息时,Zookeeper会监听进程子目录的状态变更,即捕获相应的删除操作,此时,Zookeeper会向所有或特定的Broker发送解除限速通知,以控制Broker恢复发送速度。
在本实施例提供的一个技术方案中,限制Broker的发送速度之后,比较内存使用率和低内存水位线阈值,并根据比较结果调整Broker的发送速度,使得Bookie重新按照正常的速度写入消息,以此提升消息的每秒处理的消息数和吞吐量。整个流程下来,以Bookie的实时内存水位线为基准,动态启动或关闭反压机制,灵活限制客户端的流量,有效应对突发洪峰流量。
进一步的,参照图6,提出本发明内存溢出处理方法的第四实施例。基于上述图4所示的实施例,所述当所述Bookie的内存使用率小于所述低内存水位线阈值时,所述Bookie删除所述Zookeeper的进程子目录中的所述反压信息的步骤之前,包括:
步骤S41:当检测到所述Broker的发送速度降低时,所述Bookie将内存中的存储日志同步到磁盘中;
步骤S42:当检测到同步完成后,清理所述内存中的存储日志。
可以理解的是,一般情况下,Bookie会将信息写入journal和ledger存储日志,然后将上述日志以定时定量的方式刷到磁盘中,再清理内存中的信息,以实现持久化存储。为了减少内存溢出的风险,以及缩短受压机制的处理时长,本方案采用强制刷盘和清理。
可选地,一旦检测到Broker的发送速度降低时,Bookie立即启动内存垃圾回收线程,将内存中的journal和ledger存储日志同步到磁盘中。
进一步地,当检测到上述同步操作完成后,Bookie再次启动内存垃圾回收线程,清理内存中的所有journal和ledger存储日志,释放存储空间,以便写入新的信息。
需要注意的是,在相关技术中,通常在Bookie的内存使用率达到峰值时,才会启动内存垃圾回收线程,这样,在日志刷盘完成后,大量的数据缓存在内存中,再次启动内存垃圾回收线程时,垃圾回收停顿,会耗费大量的时间,这对Bookie与Zookeeper服务之间的长连接造成负面影响,心跳失败,导致连接超时,Bookie服务进程异常退出。
而本方案,在检测到Broker的发送速度降低时,便强制启动内存垃圾回收线程,进行刷盘和清理,避免内存垃圾回收时间过长导致连接Zookeeper服务超时,保证请求处理时的稳定性。
在本实施例提供的一个技术方案中,不再以定时定量的方式进行刷盘和清理,而是根据Bookie的内存使用率和低内存水位线阈值之间的关系,来触发刷盘和清理的时机,使得Bookie服务管理内存的粒度更加精细。
进一步的,参照图7,提出本发明内存溢出处理方法的第五实施例。基于上述图1所示的实施例,所述存储节点Bookie接收反压组件发送的高内存水位线阈值的步骤包括:
步骤S51:存储节点Bookie接收反压组件发送的高内存水位线阈值,以及反压机制的配置属性;
所述当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤包括:
步骤S52:当所述Bookie的内存使用率大于所述高内存水位线阈值,且所述配置属性满足预置条件时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息。
可以理解的是,反压机制的配置属性是指,除Bookie的内存使用率之外的,其他能够决定是否采用反压机制的配置属性,如Bookie和Broker之间的连接数、Broker的当前发送速度等,本实施例不作具体限定。
可选地,Bookie不仅会接收反压组件发送的高内存水位线阈值,还会接收反压机制的配置属性。然后判定是否采用反压机制,即判定Bookie的内存使用率是否大于高内存水位线阈值,且配置属性是否满足预置条件,只有同时满足以上两个条件时,才会采取相应的反压措施,即Bookie向Zookeeper的进程子目录中写入反压信息。
在本实施例提供的一个技术方案中,不仅考虑Bookie的内存使用率,还考虑到Bookie和Broker之间的连接数、Broker的当前发送速度等其他配置属性,从多方面综合性判定反压机制的应用场景,实现精准控制。
本发明实施例提供一种内存溢出处理装置,所述装置包括:
Bookie,用于接收反压组件发送的高内存水位线阈值;
Bookie,用于当所述Bookie的内存使用率大于所述高内存水位线阈值时,向管理节点Zookeeper的进程子目录中写入反压信息;
Zookeeper,用于在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,在此暂不赘述。
参照图8,图8为本发明实施例方案涉及的硬件运行环境的内存溢出处理设备结构示意图。
如图8所示,该内存溢出处理设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图8中示出的结构并不构成对内存溢出处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图8所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及内存溢出处理程序。
在图8所示的内存溢出处理设备中,网络接口1004主要用于与其他设备进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明内存溢出处理设备中的处理器1001、存储器1005可以设置在内存溢出处理设备中,所述内存溢出处理设备通过处理器1001调用存储器1005中存储的内存溢出处理程序,并执行本发明实施例提供的内存溢出处理方法。
本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时实现上述内存溢出处理方法任一实施例中的步骤。
由于计算机可读存储介质部分的实施例与方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,在此暂不赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种内存溢出处理方法,其特征在于,所述内存溢出处理方法包括以下步骤:
存储节点Bookie接收反压组件发送的高内存水位线阈值;
当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息;
所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度。
2.如权利要求1所述的内存溢出处理方法,其特征在于,所述高内存水位线阈值包括第一内存水位线阈值和第二内存水位线阈值,所述第一内存水位线阈值大于所述第二内存水位线阈值,所述当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤包括:
当所述Bookie的内存使用率大于所述第一内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入停止信息;
所述Zookeeper在监听到所述停止信息的写入操作后,向计算节点Broker发送停止通知,以控制所述Broker停止发送;
当所述Bookie的内存使用率大于所述第二内存水位线阈值时,执行所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤。
3.如权利要求1所述的内存溢出处理方法,其特征在于,所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度的步骤之后,包括:
所述Bookie接收所述反压组件发送的低内存水位线阈值;
当所述Bookie的内存使用率小于所述低内存水位线阈值时,所述Bookie删除所述Zookeeper的进程子目录中的所述反压信息;
所述Zookeeper在监听到所述反压信息的删除操作后,向所述Broker发送解除限速通知,以控制所述Broker恢复发送速度。
4.如权利要求3所述的内存溢出处理方法,其特征在于,所述当所述Bookie的内存使用率小于所述低内存水位线阈值时,所述Bookie删除所述Zookeeper的进程子目录中的所述反压信息的步骤之前,包括:
当检测到所述Broker的发送速度降低时,所述Bookie将内存中的存储日志同步到磁盘中;
当检测到同步完成后,清理所述内存中的存储日志。
5.如权利要求1所述的内存溢出处理方法,其特征在于,所述存储节点Bookie接收反压组件发送的高内存水位线阈值的步骤包括:
存储节点Bookie接收反压组件发送的高内存水位线阈值,以及反压机制的配置属性;
所述当所述Bookie的内存使用率大于所述高内存水位线阈值时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息的步骤包括:
当所述Bookie的内存使用率大于所述高内存水位线阈值,且所述配置属性满足预置条件时,所述Bookie向管理节点Zookeeper的进程子目录中写入反压信息。
6.如权利要求1所述的内存溢出处理方法,其特征在于,所述Zookeeper在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度的步骤之后,包括:
所述Bookie根据所述内存使用率和所述高内存水位线阈值,判定反压机制状态和反压机制结果;
统计所述内存使用率降至所述高内存水位线阈值所花费的处理时长,以及检测所述Broker的实时发送速度;
将所述反压机制状态、所述反压机制结果、所述处理时长和所述实时发送速度写入所述Zookeeper的内存溢出日志。
7.如权利要求6所述的内存溢出处理方法,其特征在于,所述将所述反压机制状态、所述反压机制结果、所述处理时长和所述实时发送速度写入所述Zookeeper的内存溢出日志的步骤之后,包括:
所述Broker接收到RestAPI接口的查询指令后,从所述Zookeeper调取所述内存溢出日志;
将所述内存溢出日志转化为监控趋势图,并基于所述RestAPI接口,对外提供所述监控趋势图。
8.一种内存溢出处理装置,其特征在于,所述装置包括:
Bookie,用于接收反压组件发送的高内存水位线阈值;
Bookie,用于当所述Bookie的内存使用率大于所述高内存水位线阈值时,向管理节点Zookeeper的进程子目录中写入反压信息;
Zookeeper,用于在监听到所述反压信息的写入操作后,向计算节点Broker发送限速通知,以控制所述Broker降低发送速度。
9.一种内存溢出处理设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内存溢出处理程序,所述内存溢出处理程序配置为实现如权利要求1至7中任一项所述的内存溢出处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有内存溢出处理程序,所述内存溢出处理程序被处理器执行时实现如权利要求1至7任一项所述的内存溢出处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310896239.0A CN116954898A (zh) | 2023-07-20 | 2023-07-20 | 内存溢出处理方法、设备、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310896239.0A CN116954898A (zh) | 2023-07-20 | 2023-07-20 | 内存溢出处理方法、设备、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116954898A true CN116954898A (zh) | 2023-10-27 |
Family
ID=88450634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310896239.0A Pending CN116954898A (zh) | 2023-07-20 | 2023-07-20 | 内存溢出处理方法、设备、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116954898A (zh) |
-
2023
- 2023-07-20 CN CN202310896239.0A patent/CN116954898A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10528405B2 (en) | Methods, apparatus and computer programs for managing persistence | |
CN109522287B (zh) | 分布式文件存储集群的监控方法、系统、设备及介质 | |
CN110213371B (zh) | 消息消费方法、装置、设备及计算机存储介质 | |
US8386611B2 (en) | Information system, load control method, load control program and recording medium | |
US10417062B2 (en) | Method and apparatus of unloading out of memory processing flow to user space | |
CN112165436B (zh) | 流量控制方法、装置及系统 | |
CN111190745A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN112650575B (zh) | 资源调度方法、装置和云端服务系统 | |
US20200057714A1 (en) | Testing data changes in production systems | |
CN111984495A (zh) | 一种大数据监控方法、装置和存储介质 | |
CN110674149B (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN109766198B (zh) | 流式处理方法、装置、设备及计算机可读存储介质 | |
CN113285884B (zh) | 流量控制方法及系统 | |
CN110534136B (zh) | 录音的方法和装置 | |
CN111352746B (zh) | 消息限流方法、存储介质 | |
CN116954898A (zh) | 内存溢出处理方法、设备、装置及计算机可读存储介质 | |
CN111309442A (zh) | 微服务容器数量的调整方法、装置、系统、介质及设备 | |
CN114143263B (zh) | 一种对用户请求进行限流的方法、设备及介质 | |
CN115718732A (zh) | 一种磁盘文件管理方法、装置、设备及存储介质 | |
CN114020209A (zh) | 一种客户端业务限速方法、装置、设备及存储介质 | |
KR20230055575A (ko) | 사설망과 공용망을 위한 범용 대규모 멀티 클라우드 환경 모니터링 시스템 및 방법 | |
CN110134547B (zh) | 一种基于中间件的重复数据删除方法和相关装置 | |
AU2010273075A1 (en) | System and method for multimedia messaging service processing | |
CN111158899A (zh) | 一种数据的采集方法、采集器、任务管理中心以及系统 | |
US20180123866A1 (en) | Method and apparatus for determining event level of monitoring result |
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 |