CN109828719B - 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备 - Google Patents
基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备 Download PDFInfo
- Publication number
- CN109828719B CN109828719B CN201811537818.1A CN201811537818A CN109828719B CN 109828719 B CN109828719 B CN 109828719B CN 201811537818 A CN201811537818 A CN 201811537818A CN 109828719 B CN109828719 B CN 109828719B
- Authority
- CN
- China
- Prior art keywords
- disk
- log file
- commit log
- preset
- writing
- 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
Abstract
一种基于云监控的commitLog文件所在磁盘控制方法,包括:当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率;当当前磁盘使用率小于预设第一磁盘使用率阈值时,将用户请求进行封装后写入磁盘的commitLog文件中;当磁盘使用率大于或等于预设第一磁盘使用率阈值但小于预设第二磁盘使用率阈值且写入commitLog文件的失败率小于或等于预设失败率阈值时,根据系统当前的负载控制写入所述commitLog文件的速度。本发明还提供一种基于云监控的commitLog文件所在磁盘控制装置、计算机设备及存储介质。本发明能够通过根据磁盘使用率及写入commitLog文件的失败率确定是否继续写入commitLog文件,确保磁盘使用率不至于过高。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备。
背景技术
Cassandra作为海量数据处理的数据库,为了提升性能,先将数据写入到内存表memtable中,当内存表memtable达到一定容量条件时,再将内存表memtable中的数据持久化到硬盘上。但是如果系统宕机,或者重启,那么内存表memtable中的数据就会丢失,Cassandra提供了一个数据恢复机制-先写入日志再写入数据的方式,所述日志称之为commitLog,通过commitLog来恢复原来存在于内存表memtable中的数据。
然而,在数据读写十分频繁的情况下,写入的commitLog日志将会越来越多,使得磁盘中的commitLog文件也会越来越多。伴随着commitLog文件的增加,磁盘使用率将会越来越高,磁盘空间越来越少。磁盘空间不足,不仅会影响写入commitLog日志的速度,还会导致commitLog日志无法正常存储,从而导致数据库无法正常访问。另外,磁盘使用率太高,还会影响系统的运行效率。
如果依靠管理人员人工监控磁盘使用率,并进行手工处理,成本高,效率低且缺乏实时性,已经不适用于大型应用系统。尤其是在高度集群化的企业应用管理系统中,自动化监控commitLog文件所在磁盘的磁盘使用率变得十分有必要。
发明内容
鉴于以上内容,有必要提出一种基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备,能够根据磁盘使用率及写入commitLog文件的失败率确定是否继续写入commitLog文件,确保磁盘使用率不至于过高。
本发明的第一方面提供一种基于云监控的commitLog文件所在磁盘控制方法,所述方法包括:
当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率;
当确定所述当前磁盘使用率小于预设第一磁盘使用率阈值时,将所述用户请求进行封装后写入所述磁盘的commitLog文件中;
当确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值;
当确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时,判断写入所述commitLog文件的失败率是否大于预设失败率阈值;
当确定所述写入commitLog文件的失败率小于或者等于所述预设失败率阈值时,根据系统当前的负载控制写入所述commitLog文件的速度。
根据本发明的一个优选实施例,所述根据系统当前的负载控制写入所述commitLog文件的速度包括:
当所述系统当前的负载小于所述预设负载阈值时,以第一流控控制写入所述commitLog文件的速度;
当所述系统当前的负载大于所述预设负载阈值时,以第二流控控制写入所述commitLog文件的速度;
其中,所述第一流控大于所述第二流控。
根据本发明的一个优选实施例,所述根据系统当前的负载控制写入所述commitLog文件的速度包括:
根据预先设置的负载与流控之间的对应关系,匹配出对应所述系统当前的负载的流控;
根据所匹配出的流控控制写入所述commitLog文件的速度。
根据本发明的一个优选实施例,当确定所述当前磁盘使用率大于或者等于所述预设第二磁盘使用率阈值时,所述方法还包括:
对所述磁盘进行优化。
根据本发明的一个优选实施例,所述对所述磁盘进行优包括:
获取所述磁盘中的文件的写入时间;
将对应写入时间较早的目标文件持久至硬盘中,同时删除所述磁盘中的所述目标文件。
根据本发明的一个优选实施例,当确定写入所述commitLog文件的失败率大于所述预设失败率阈值时,所述方法还包括:
根据预设警报方式进行报警。
根据本发明的一个优选实施例,在所述获取commitLog文件所在磁盘的当前磁盘使用率之后,所述方法还包括:
生成监控信息展示界面,展示所述当前磁盘使用率。
本发明的第二方面提供一种基于云监控的commitLog文件所在磁盘控制装置,所述装置包括:
获取模块,用于当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率;
第一判断模块,用于判断所述当前磁盘使用率是否小于预设第一磁盘使用率阈值;
第一写入模块,用于当所述第一判断模块确定所述当前磁盘使用率小于所述预设第一磁盘使用率阈值时,将所述用户请求进行封装后写入所述磁盘的commitLog文件中;
第二判断模块,用于当所述第一判断模块确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值;
第三判断模块,用于当所述第二判断模块确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时,判断写入所述commitLog文件的失败率是否大于预设失败率阈值;
第二写入模块,用于当所述第三判断模块确定所述写入commitLog文件的失败率小于或者等于所述预设失败率阈值时,根据系统当前的负载控制写入所述commitLog文件的速度。
本发明的第三方面提供一种计算机设备,所述计算机设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述的基于云监控的commitLog文件所在磁盘控制方法。
本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的基于云监控的commitLog文件所在磁盘控制方法。
本发明实施例提供的基于云监控的commitLog文件所在磁盘控制方法、装置、计算机设备及存储介质,当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率;判断所述当前磁盘使用率是否大于预设第一磁盘使用率阈值;在确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,进一步判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值;当确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时;更进一步判断写入commitLog文件的失败率是否大于预设失败率阈值;在commitLog文件所在磁盘当前的磁盘使用率低于所述预设第二磁盘使用率阈值,但是写入commitLog文件的失败率大于预设失败率阈值的情况下,根据预设警报方式进行报警;在commitLog文件所在磁盘当前的磁盘使用率低于所述预设第二磁盘使用率阈值,但是写入commitLog文件的失败率小于预设失败率阈值的情况下,根据系统当前的负载控制写入commitLog文件的速度。
能够根据磁盘使用率及写入commitLog文件的失败率综合确定是否继续写入commitLog文件,确保磁盘使用率不至于过高,另外,在写入commitLog文件失败次数较多时,还能进行报警,提示相关人员排除故障,确保写入commitLog文件的正确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施例一提供的基于云监控的commitLog文件所在磁盘控制方法的流程图。
图2是本发明实施例二提供的基于云监控的commitLog文件所在磁盘控制装置的功能模块图。
图3是本发明实施例三提供的计算机设备的示意图。
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
本发明实施例的基于云监控的commitLog文件所在磁盘控制方法应用在计算机设备中,也可以应用在计算机设备和通过网络与所述计算机设备进行连接的服务器所构成的硬件环境中,由服务器和计算机设备共同执行。网络包括但不限于:广域网、城域网或局域网。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算计算机设备。
所述对于需要进行基于云监控的commitLog文件所在磁盘控制方法的计算机设备,可以直接在计算机设备上集成本发明的方法所提供的基于云监控的commitLog文件所在磁盘控制功能,或者安装用于实现本发明的方法的客户端。再如,本发明所提供的方法还可以以软件开发工具包(Software Development Kit,SDK)的形式运行在服务器等计算机设备上,以SDK的形式提供基于云监控的commitLog文件所在磁盘控制功能的接口,服务器或其他计算机设备通过提供的接口即可实现基于云监控的commitLog文件所在磁盘控制功能。
实施例一
图1是本发明实施例一提供的基于云监控的commitLog文件所在磁盘控制方法的流程图。所述基于云监控的commitLog文件所在磁盘控制方法对系统中commitLog所在磁盘的磁盘使用率指标进行监控,并根据磁盘使用率控制写入commitLog文件的速度。根据不同的需求,该流程图中的执行顺序可以改变,某些步骤可以省略。
101:当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率。
本实施例中,用户请求操作Cassandra数据库时,可以向系统发送请求指令。用户可以调用Real-timeBean类方法发送操作Cassandra数据库的请求。
所述操作Cassandra数据库的请求可以包括以下一种或多种的组合:添加(Add)、更新(Update)、删除(Delete)、批量添加(mAdd)、批量更新(mUpdate)、批量删除(mDelete)等。
当系统接收到用户请求时,先获取commitLog文件所在磁盘的磁盘使用率。
所述磁盘使用率可以为磁盘中的文件占用磁盘的大小与磁盘总大小的比值。
102:判断所述当前磁盘使用率是否大于预设第一磁盘使用率阈值。
本实施例中,可以预先设置第一磁盘使用率阈值及第二磁盘使用率阈值,其中,第一磁盘使用率阈小于第二磁盘使用率阈值。
所述第一磁盘使用率阈值可以为50%,表示磁盘空间未满但空间已有限,虽然能继续写入文件,但需要控制文件的写入速率。
所述第二磁盘使用率阈值可以为90%,表示磁盘空间已达到了最大的使用率,不能再写入文件,可能还需要对磁盘进行优化。
当确定所述当前磁盘使用率小于所述预设第一磁盘使用率阈值时,执行步骤103;当确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,执行步骤104。
103:将所述用户请求进行封装后写入所述磁盘的commitLog文件中。
本实施例中,当前磁盘使用率小于预设第一磁盘使用率阈值,表明当前磁盘空间较大,可以在commitLog文件中写入commitLog日志。
commitLog日志记录了数据库接收到的所有用户请求等信息。
系统接收到所述用户请求时,将所述用户请求进行封装为Document对象,将封装后的Document对象添加至CommitLog文件中。
每个CommitLog文件的大小是固定的,称之为一个CommitLog Segment。当一个CommitLog文件写满以后,系统会新建一个CommitLog文件。当旧的CommitLog文件不再需要时,系统会自动清除旧的CommitLog文件。
104:判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值。
本实施例中,当前磁盘使用率大于或者等于预设第一磁盘使用率阈值时,可以进一步判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值。
示例性的,假设当前磁盘使用率为75%,而所述第一磁盘使用率阈值为50%,所述第二磁盘使用率阈值为90%,则确定所述当前磁盘使用率介于预设第一磁盘使用率阈值和第二预设使用率阈值之间。
当确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时,执行步骤105;当确定所述当前磁盘使用率大于或者等于所述预设第二磁盘使用率阈值时,执行步骤108。
105:判断写入所述commitLog文件的失败率是否大于预设失败率阈值。
本实施例中,commitLog文件的失败率为写入commitLog文件的失败次数与写入commitLog文件的总次数的比值。例如,写入commitLog文件100次,但失败了13次,则写入commitLog文件的失败率为13%。
当确定写入commitLog文件的失败率大于预设失败率阈值(例如,10%)时,执行步骤106;当确定写入commitLog文件的失败率小于或者等于预设失败率阈值(例如,10%)时,执行步骤107。
106:根据预设警报方式进行报警。
所述预设警报方式可以是发出警报声、显示报警画面、发送报警消息、发送报警邮件等方式至相关工作人员。所述相关工作人员可以包括,但不限于以下一种或者多种的组合:运维人员、开发人员、测试人员、项目经理等。
尽管commitLog文件所在磁盘当前的磁盘使用率低于所述预设第二磁盘使用率阈值,但是,写入commitLog文件的失败率大于预设失败率阈值,认为此时,系统中可能存在故障,导致写入commitLog文件失败,通过预设的报警方式进行警报,能够在写入commitLog文件的失败率较高且超过预设失败率阈值时,通知相关人员进行故障检查,确保后续commitLog文件能写入成功。
107:根据系统当前的负载控制写入所述commitLog文件的速度。
所述系统当前的负载为应用的IO负载强度。可以通过iotop命令获取系统当前的负载值。
在一些实施例中,所述根据系统当前的负载控制写入所述commitLog文件的速度可以包括:
当所述系统当前的负载小于所述预设负载阈值时,以第一流控控制写入所述commitLog文件的速度;
当所述系统当前的负载大于所述预设负载阈值时,以第二流控控制写入所述commitLog文件的速度;
其中,所述第一流控大于所述第二流控。
在一些实施例中,所述根据系统当前的负载控制写入所述commitLog文件的速度可以包括:
根据预先设置的负载与流控之间的对应关系,匹配出对应所述系统当前的负载的流控;
根据所匹配出的流控控制写入所述commitLog文件的速度。
所述流控是指流量控制。
流控的实现方法包括以下两种:一种是通过路由器、交换机的QoS模块实现基于源地址、目的地址、源端口、目的端口以及协议类型的流量控制;另一种是通过专业的流控设备实现基于应用层的流量控制。
在系统当前的负载小于预设负载阈值时,说明系统当前负载很小,从而以较大的第一流控,例如,200KB/S控制写入commitLog文件的速度,能够提高写入commitLog文件的速度,缓解所述内存中的数据压力,且能避免因系统断电或其他非正常情况发生时导致的所述内存中的数据丢失的问题。在系统当前的负载大于预设负载阈值时,说明系统当前负载很大,从而以较小的第二流控,例如,100KB/S控制写入commitLog文件的速度,使得所述内存中数据写入到commitLog文件中的速度不至于过快,避免磁盘使用率快速升高,导致系统运行缓慢。
108:对所述磁盘进行优化。
本实施例中,当确定所述当前磁盘使用率大于或者等于所述预设第二磁盘使用率阈值时,说明系统当前的磁盘使用率已经达到了最大的承受能力,不能再写入文件,否则会造成磁盘满载。
对所述磁盘进行优可以包括:获取所述磁盘中的文件的写入时间;将对应写入时间较早的目标文件持久至硬盘中,同时删除所述磁盘中的所述目标文件。
对所述磁盘进行优化能够将写入时间较早的文件持久到硬盘中,给磁盘腾出一些空间。
进一步的,在获取commitLog文件所在磁盘的当前磁盘使用率之后,所述基于云监控的commitLog文件所在磁盘控制方法还可以包括:生成监控信息展示界面,在所述监控信息展示界面中展示所述当前磁盘使用率。
可以通过图表展示所述当前磁盘使用率。所述图表可以包括折线图、面积图、热力图、饼图、表格等。
在一实施例中,可以通过Grafana展示所述当前磁盘使用率。
具体的,可以通过Grafana的采集agent,传送所述当前磁盘使用率到Grafana平台进行展示。
Grafana是一个可视化面板(Dashboard),支持各种图表和布局展示,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana具有以下特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;支持多个数据源。
或者,可以通过Highcharts展示所述磁盘使用率。Highcharts是一个用纯JavaScript编写的一个图表库。Highcharts能够很简单便捷的在web网站或是web应用程序添加有交互性的图表。HIghcharts支持监控平台的各种图例。
综上所述,根据上述commitLog所在磁盘的监控方法,当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率;判断所述当前磁盘使用率是否大于预设第一磁盘使用率阈值;在确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,进一步判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值;当确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时;更进一步判断写入commitLog文件的失败率是否大于预设失败率阈值;在commitLog文件所在磁盘当前的磁盘使用率低于所述预设第二磁盘使用率阈值,但是写入commitLog文件的失败率大于预设失败率阈值的情况下,根据预设警报方式进行报警;在commitLog文件所在磁盘当前的磁盘使用率低于所述预设第二磁盘使用率阈值,但是写入commitLog文件的失败率小于预设失败率阈值的情况下,根据系统当前的负载控制写入commitLog文件的速度。
能够根据磁盘使用率及写入commitLog文件的失败率综合确定是否继续写入commitLog文件,确保磁盘使用率不至于过高,另外,在写入commitLog文件失败次数较多时,还能进行报警,提示相关人员排除故障,确保写入commitLog文件的正确率。
最后,根据系统当前的负载控制写入commitLog文件的速率,在系统当前负载很小时,以较大的流控控制写入commitLog文件的速度,能够提高写入commitLog文件的速度,缓解所述内存中的数据压力,且能避免因系统断电或其他非正常情况发生时导致的所述内存中的数据丢失的问题。在系统当前负载很大时,以较小的流控控制写入commitLog文件的速度,使得所述内存中数据写入到commitLog文件中的速度不至于过快,避免磁盘使用率快速升高,导致系统运行缓慢。
以上所述,仅是本发明的具体实施方式,但本发明的保护范围并不局限于此,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。
下面结合第2至3图,分别对实现上述基于云监控的commitLog文件所在磁盘控制方法的计算机设备的功能模块及硬件结构进行介绍。
实施例二
图2为本发明基于云监控的commitLog文件所在磁盘控制装置较佳实施例中的功能模块图。
在一些实施例中,所述基于云监控的commitLog文件所在磁盘控制装置20运行于计算机设备中。所述基于云监控的commitLog文件所在磁盘控制装置20对系统中commitLog所在磁盘的磁盘使用率指标进行监控,并根据磁盘使用率控制写入commitLog文件的速度。所述基于云监控的commitLog文件所在磁盘控制装置20可以包括多个由程序代码段所组成的功能模块。所述基于云监控的commitLog文件所在磁盘控制装置20中的各个程序段的程序代码可以存储于存储器中,并由至少一个处理器所执行。
本实施例中,所述基于云监控的commitLog文件所在磁盘控制装置20根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:获取模块201、第一判断模块202、第一写入模块203、第二判断模块204、第三判断模块205、报警模块206、第二写入模块207及优化模块208。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在一些实施例中,关于各模块的功能将在后续的实施例中详述。
获取模块201,用于当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率。
本实施例中,用户请求操作Cassandra数据库时,可以向系统发送请求指令。用户可以调用Real-timeBean类方法发送操作Cassandra数据库的请求。
所述操作Cassandra数据库的请求可以包括以下一种或多种的组合:添加(Add)、更新(Update)、删除(Delete)、批量添加(mAdd)、批量更新(mUpdate)、批量删除(mDelete)等。
当所述获取模块201接收到用户请求时,先获取commitLog文件所在磁盘的磁盘使用率。
所述磁盘使用率可以为磁盘中的文件占用磁盘的大小与磁盘总大小的比值。
第一判断模块202,用于判断所述当前磁盘使用率是否大于预设第一磁盘使用率阈值。
本实施例中,可以预先设置第一磁盘使用率阈值及第二磁盘使用率阈值,其中,第一磁盘使用率阈小于第二磁盘使用率阈值。
所述第一磁盘使用率阈值可以为50%,表示磁盘空间未满但空间已有限,虽然能继续写入文件,但需要控制文件的写入速率。
所述第二磁盘使用率阈值可以为90%,表示磁盘空间已达到了最大的使用率,不能再写入文件,可能还需要对磁盘进行优化。
第一写入模块203,用于当所述第一判断模块202确定所述当前磁盘使用率小于所述预设第一磁盘使用率阈值时,将所述用户请求进行封装后写入所述磁盘的commitLog文件中。
本实施例中,当前磁盘使用率小于预设第一磁盘使用率阈值,表明当前磁盘空间较大,可以在commitLog文件中写入commitLog日志。
commitLog日志记录了数据库接收到的所有用户请求等信息。
系统接收到所述用户请求时,将所述用户请求进行封装为Document对象,将封装后的Document对象添加至CommitLog文件中。
每个CommitLog文件的大小是固定的,称之为一个CommitLog Segment。当一个CommitLog文件写满以后,系统会新建一个CommitLog文件。当旧的CommitLog文件不再需要时,系统会自动清除旧的CommitLog文件。
第二判断模块204,用于当所述第一判断模块202确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值。
本实施例中,当前磁盘使用率大于或者等于预设第一磁盘使用率阈值时,可以进一步判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值。
示例性的,假设当前磁盘使用率为75%,而所述第一磁盘使用率阈值为50%,所述第二磁盘使用率阈值为90%,则确定所述当前磁盘使用率介于预设第一磁盘使用率阈值和第二预设使用率阈值之间。
第三判断模块205,用于当所述第二判断模块204确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时,判断写入所述commitLog文件的失败率是否大于预设失败率阈值。
本实施例中,commitLog文件的失败率为写入commitLog文件的失败次数与写入commitLog文件的总次数的比值。例如,写入commitLog文件100次,但失败了13次,则写入commitLog文件的失败率为13%。
报警模块206,用于当所述第三判断模块205确定写入commitLog文件的失败率大于预设失败率阈值时,根据预设警报方式进行报警。
所述预设失败率阈值可以是,例如,10%。
所述预设警报方式可以是发出警报声、显示报警画面、发送报警消息、发送报警邮件等方式至相关工作人员。所述相关工作人员可以包括,但不限于以下一种或者多种的组合:运维人员、开发人员、测试人员、项目经理等。
尽管commitLog文件所在磁盘当前的磁盘使用率低于所述预设第二磁盘使用率阈值,但是,写入commitLog文件的失败率大于预设失败率阈值,认为此时,系统中可能存在故障,导致写入commitLog文件失败,通过预设的报警方式进行警报,能够在写入commitLog文件的失败率较高且超过预设失败率阈值时,通知相关人员进行故障检查,确保后续commitLog文件能写入成功。
第二写入模块207,用于当所述第三判断模块205确定写入commitLog文件的失败率小于或者等于预设失败率阈值时,根据系统当前的负载控制写入所述commitLog文件的速度。
所述系统当前的负载为应用的IO负载强度。可以通过iotop命令获取系统当前的负载值。
在一些实施例中,所述第二写入模块207根据系统当前的负载控制写入所述commitLog文件的速度可以包括:
当所述系统当前的负载小于所述预设负载阈值时,以第一流控控制写入所述commitLog文件的速度;
当所述系统当前的负载大于所述预设负载阈值时,以第二流控控制写入所述commitLog文件的速度;
其中,所述第一流控大于所述第二流控。
在一些实施例中,所述第二写入模块207根据系统当前的负载控制写入所述commitLog文件的速度可以包括:
根据预先设置的负载与流控之间的对应关系,匹配出对应所述系统当前的负载的流控;
根据所匹配出的流控控制写入所述commitLog文件的速度。
所述流控是指流量控制。
流控的实现方法包括以下两种:一种是通过路由器、交换机的QoS模块实现基于源地址、目的地址、源端口、目的端口以及协议类型的流量控制;另一种是通过专业的流控设备实现基于应用层的流量控制。
在系统当前的负载小于预设负载阈值时,说明系统当前负载很小,从而以较大的第一流控,例如,200KB/S控制写入commitLog文件的速度,能够提高写入commitLog文件的速度,缓解所述内存中的数据压力,且能避免因系统断电或其他非正常情况发生时导致的所述内存中的数据丢失的问题。在系统当前的负载大于预设负载阈值时,说明系统当前负载很大,从而以较小的第二流控,例如,100KB/S控制写入commitLog文件的速度,使得所述内存中数据写入到commitLog文件中的速度不至于过快,避免磁盘使用率快速升高,导致系统运行缓慢。
优化模块208,用于当所述第三判断模块205确定所述当前磁盘使用率大于或者等于所述预设第二磁盘使用率阈值时,对所述磁盘进行优化。
本实施例中,当确定所述当前磁盘使用率大于或者等于所述预设第二磁盘使用率阈值时,说明系统当前的磁盘使用率已经达到了最大的承受能力,不能再写入文件,否则会造成磁盘满载。
对所述磁盘进行优可以包括:获取所述磁盘中的文件的写入时间;将对应写入时间较早的目标文件持久至硬盘中,同时删除所述磁盘中的所述目标文件。
对所述磁盘进行优化能够将写入时间较早的文件持久到硬盘中,给磁盘腾出一些空间。
进一步的,在所述获取模块201获取commitLog文件所在磁盘的当前磁盘使用率之后,所述基于云监控的commitLog文件所在磁盘控制装置20还可以包括:监控模块,用于生成监控信息展示界面,在所述监控信息展示界面中展示所述当前磁盘使用率。
可以通过图表展示所述当前磁盘使用率。所述图表可以包括折线图、面积图、热力图、饼图、表格等。
在一实施例中,可以通过Grafana展示所述当前磁盘使用率。
具体的,可以通过Grafana的采集agent,传送所述当前磁盘使用率到Grafana平台进行展示。
Grafana是一个可视化面板(Dashboard),支持各种图表和布局展示,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana具有以下特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;支持多个数据源。
或者,可以通过Highcharts展示所述磁盘使用率。Highcharts是一个用纯JavaScript编写的一个图表库。Highcharts能够很简单便捷的在web网站或是web应用程序添加有交互性的图表。HIghcharts支持监控平台的各种图例。
综上所述,根据上述基于云监控的commitLog文件所在磁盘控制装置,当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率;判断所述当前磁盘使用率是否大于预设第一磁盘使用率阈值;在确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,进一步判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值;当确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时;更进一步判断写入commitLog文件的失败率是否大于预设失败率阈值;在commitLog文件所在磁盘当前的磁盘使用率低于所述预设第二磁盘使用率阈值,但是写入commitLog文件的失败率大于预设失败率阈值的情况下,根据预设警报方式进行报警;在commitLog文件所在磁盘当前的磁盘使用率低于所述预设第二磁盘使用率阈值,但是写入commitLog文件的失败率小于预设失败率阈值的情况下,根据系统当前的负载控制写入commitLog文件的速度。
能够根据磁盘使用率及写入commitLog文件的失败率综合确定是否继续写入commitLog文件,确保磁盘使用率不至于过高,另外,在写入commitLog文件失败次数较多时,还能进行报警,提示相关人员排除故障,确保写入commitLog文件的正确率。
最后,根据系统当前的负载控制写入commitLog文件的速率,在系统当前负载很小时,以较大的流控控制写入commitLog文件的速度,能够提高写入commitLog文件的速度,缓解所述内存中的数据压力,且能避免因系统断电或其他非正常情况发生时导致的所述内存中的数据丢失的问题。在系统当前负载很大时,以较小的流控控制写入commitLog文件的速度,使得所述内存中数据写入到commitLog文件中的速度不至于过快,避免磁盘使用率快速升高,导致系统运行缓慢。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机计算机设备(可以是个人计算机,双屏计算机设备,或者网络计算机设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。
实施例三
图3为本发明实施例三提供的计算机设备的示意图。
所述计算机设备3包括:存储器31、至少一个处理器32、存储在所述存储器31中并可在所述至少一个处理器32上运行的计算机程序33及至少一条通讯总线34。
所述至少一个处理器32执行所述计算机程序33时实现上述基于云监控的commitLog文件所在磁盘控制方法实施例中的步骤。
示例性的,所述计算机程序33可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器31中,并由所述至少一个处理器32执行。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序33在所述计算机设备3中的执行过程。
所述计算机设备3可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算计算机设备。本领域技术人员可以理解,所述示意图3仅仅是计算机设备3的示例,并不构成对计算机设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备3还可以包括输入输出计算机设备、网络接入计算机设备、总线等。
所述至少一个处理器32可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。该处理器32可以是微处理器或者该处理器32也可以是任何常规的处理器等,所述处理器32是所述计算机设备3的控制中心,利用各种接口和线路连接整个计算机设备3的各个部分。
所述存储器31可用于存储所述计算机程序33和/或模块/单元,所述处理器32通过运行或执行存储在所述存储器31内的计算机程序和/或模块/单元,以及调用存储在存储器31内的数据,实现所述计算机设备3的各种功能。所述存储器31可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备3的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器31可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述计算机设备3集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在本发明所提供的几个实施例中,应该理解到,所揭露的服务器和方法,可以通过其它的方式实现。例如,以上所描述的服务器实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能单元可以集成在相同处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在相同单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神范围。
Claims (10)
1.一种基于云监控的commitLog文件所在磁盘控制方法,其特征在于,所述方法包括:
当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率;
当确定所述当前磁盘使用率小于预设第一磁盘使用率阈值时,将所述用户请求进行封装后写入所述磁盘的commitLog文件中;
当确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值;
当确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时,判断写入所述commitLog文件的失败率是否大于预设失败率阈值;
当确定所述写入所述 commitLog文件的失败率小于或者等于所述预设失败率阈值时,根据系统当前的负载控制写入所述commitLog文件的速度。
2.如权利要求1所述的方法,其特征在于,所述根据系统当前的负载控制写入所述commitLog文件的速度包括:
当所述系统当前的负载小于预设负载阈值时,以第一流控控制写入所述commitLog文件的速度;
当所述系统当前的负载大于所述预设负载阈值时,以第二流控控制写入所述commitLog文件的速度;
其中,所述第一流控大于所述第二流控。
3.如权利要求1所述的方法,其特征在于,所述根据系统当前的负载控制写入所述commitLog文件的速度包括:
根据预先设置的负载与流控之间的对应关系,匹配出对应所述系统当前的负载的流控;
根据所匹配出的流控控制写入所述commitLog文件的速度。
4.如权利要求2或3所述的方法,其特征在于,当确定所述当前磁盘使用率大于或者等于所述预设第二磁盘使用率阈值时,所述方法还包括:
对所述磁盘进行优化。
5.如权利要求4所述的方法,其特征在于,所述对所述磁盘进行优化 包括:
获取所述磁盘中的文件的写入时间;
将对应写入时间较早的目标文件持久至硬盘中,同时删除所述磁盘中的所述目标文件。
6.如权利要求2或3所述的方法,其特征在于,当确定写入所述commitLog文件的失败率大于所述预设失败率阈值时,所述方法还包括:
根据预设警报方式进行报警。
7.如权利要求2或3所述的方法,其特征在于,在所述获取commitLog文件所在磁盘的当前磁盘使用率之后,所述方法还包括:
生成监控信息展示界面,展示所述当前磁盘使用率。
8.一种基于云监控的commitLog文件所在磁盘控制装置,其特征在于,所述装置包括:
获取模块,用于当接收到用户请求时,获取commitLog文件所在磁盘的当前磁盘使用率;
第一判断模块,用于判断所述当前磁盘使用率是否小于预设第一磁盘使用率阈值;
第一写入模块,用于当所述第一判断模块确定所述当前磁盘使用率小于所述预设第一磁盘使用率阈值时,将所述用户请求进行封装后写入所述磁盘的commitLog文件中;
第二判断模块,用于当所述第一判断模块确定所述当前磁盘使用率大于或者等于所述预设第一磁盘使用率阈值时,判断所述当前磁盘使用率是否大于预设第二磁盘使用率阈值;
第三判断模块,用于当所述第二判断模块确定所述当前磁盘使用率小于所述预设第二磁盘使用率阈值时,判断写入所述commitLog文件的失败率是否大于预设失败率阈值;
第二写入模块,用于当所述第三判断模块确定所述写入所述 commitLog文件的失败率小于或者等于所述预设失败率阈值时,根据系统当前的负载控制写入所述commitLog文件的速度。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现如权利要求1至7中任意一项所述的基于云监控的commitLog文件所在磁盘控制方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述的基于云监控的commitLog文件所在磁盘控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811537818.1A CN109828719B (zh) | 2018-12-15 | 2018-12-15 | 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811537818.1A CN109828719B (zh) | 2018-12-15 | 2018-12-15 | 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109828719A CN109828719A (zh) | 2019-05-31 |
CN109828719B true CN109828719B (zh) | 2022-04-01 |
Family
ID=66858889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811537818.1A Active CN109828719B (zh) | 2018-12-15 | 2018-12-15 | 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109828719B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113764025A (zh) * | 2020-06-30 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种故障磁盘的处理方法和装置 |
CN112749411A (zh) * | 2021-01-14 | 2021-05-04 | 上海商米科技集团股份有限公司 | 安卓文件系统的分级管控方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593440A (zh) * | 2013-11-15 | 2014-02-19 | 北京国双科技有限公司 | 日志文件的读写方法及装置 |
CN104798055A (zh) * | 2012-09-19 | 2015-07-22 | 学校法人中央大学 | 存储器控制器、数据存储装置和存储器控制方法 |
CN107544755A (zh) * | 2017-08-02 | 2018-01-05 | 新华三云计算技术有限公司 | 一种数据读写的控制方法和装置 |
WO2018019255A1 (zh) * | 2016-07-26 | 2018-02-01 | 中兴通讯股份有限公司 | 文件写入方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140337598A1 (en) * | 2013-05-07 | 2014-11-13 | Lsi Corporation | Modulation of flash programming based on host activity |
US10466914B2 (en) * | 2015-08-31 | 2019-11-05 | Pure Storage, Inc. | Verifying authorized access in a dispersed storage network |
US10768823B2 (en) * | 2016-04-12 | 2020-09-08 | Hewlett Packard Enterprise Development Lp | Flow control for unaligned writes in network storage device |
-
2018
- 2018-12-15 CN CN201811537818.1A patent/CN109828719B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104798055A (zh) * | 2012-09-19 | 2015-07-22 | 学校法人中央大学 | 存储器控制器、数据存储装置和存储器控制方法 |
CN103593440A (zh) * | 2013-11-15 | 2014-02-19 | 北京国双科技有限公司 | 日志文件的读写方法及装置 |
WO2018019255A1 (zh) * | 2016-07-26 | 2018-02-01 | 中兴通讯股份有限公司 | 文件写入方法及装置 |
CN107544755A (zh) * | 2017-08-02 | 2018-01-05 | 新华三云计算技术有限公司 | 一种数据读写的控制方法和装置 |
Non-Patent Citations (3)
Title |
---|
Zing Database: high-performance key-value store for large-scale storage service;T. T. Nguyen et al.;《Vietnam J Comput Sci》;20140817;全文 * |
一种基于预测与动态调整负载因子的SDN流表优化算法;史少平 等;《计算机科学》;20170131;第44卷(第1期);全文 * |
大数据系统开发中的构件自动选型与参数配置;钟雨 等;《计算机科学与探索》;20151215;第10卷(第9期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109828719A (zh) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755452B2 (en) | Log data collection method based on log data generated by container in application container environment, log data collection device, storage medium, and log data collection system | |
CN110427284B (zh) | 数据处理方法、分布式系统、计算机系统和介质 | |
CN108153849B (zh) | 一种数据库表切分方法、装置、系统和介质 | |
US8375200B2 (en) | Embedded device and file change notification method of the embedded device | |
CN109840142B (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN109726076B (zh) | 一种小程序生命周期管理方法和系统 | |
CN110555150B (zh) | 一种数据监控方法、装置、设备和存储介质 | |
US9785507B2 (en) | Restoration of consistent regions within a streaming environment | |
CN109828719B (zh) | 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN111913938A (zh) | 数据迁移方法、系统、装置、电子设备和介质 | |
CN112181942A (zh) | 时序数据库系统和数据处理方法及装置 | |
CN110347546B (zh) | 监控任务动态调整方法、装置、介质及电子设备 | |
US20240061701A1 (en) | Memory sharing method and device for virtual machines | |
US11841833B2 (en) | File reorganization | |
CN115981559A (zh) | 分布式数据存储方法、装置、电子设备和可读介质 | |
CN110928940B (zh) | 基于kafka集群的数据写入方法、装置、电子设备、存储介质 | |
US20210250252A1 (en) | Data processing based on response strategy | |
US10712959B2 (en) | Method, device and computer program product for storing data | |
CN103685359A (zh) | 数据处理方法及装置 | |
US11940975B2 (en) | Database distribution to avoid contention | |
CN113590424B (zh) | 一种故障监控方法、装置、设备及存储介质 | |
CN114281604B (zh) | 数据恢复方法、装置、电子设备及存储介质 | |
US20230297412A1 (en) | Device management based on degradation and workload | |
US8738581B1 (en) | Using multiple clients for data backup |
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 |