日志的落盘方法和装置、存储介质及电子设备与流程
- 国知局
- 2024-10-09 16:10:23
本技术实施例涉及计算机领域,具体而言,涉及一种日志的落盘方法和装置、存储介质及电子设备。
背景技术:
1、随着芯片集成度的提升和移动设备功能的不断增加,手机、平板电脑等设备已经集成了上网、游戏、音乐播放、视频播放、照相等多种常用的数码功能。这种功能的多样化导致了设备内部各种应用程序的频繁运行和资源调用。在这种情况下,为了确保系统的正常运行和故障分析的准确性,日志管理变得愈发重要。
2、现有的应用日志管理方法通常通过环形队列对多个服务器应用所产生的应用日志进行集中存储。由于环形队列是共享资源,当多个服务器应用同时向环形队列中添加应用日志时,必须首先检查环形队列的占用情况,即每个服务器应用在往环形队列里添加应用日志之前,需要确认环形队列是否已经被占用。如果此时其他服务器应用也在试图向环形队列中添加应用日志,则必须等待其他服务器应用添加完成后才能向环形队列中添加应用日志。这种共享资源竞争会引发线程之间的竞争以及线程优先级反转的问题,导致重要的应用日志由于时间等待或者环形队列空间不足无法得到及时缓存,出现应用日志记录滞后甚至丢失的问题,进而导致服务器应用行为与应用日志记录不一致。
3、针对相关技术中,应用日志的缓存的实时性较差等问题,尚未提出有效的解决方案。
技术实现思路
1、本技术实施例提供了一种日志的落盘方法和装置、存储介质及电子设备,以至少解决相关技术中,应用日志的缓存的实时性较差等问题。
2、根据本技术实施例的一个实施例,提供了一种日志的落盘方法,服务器上运行了n个服务器应用,n为大于1的整数,所述方法应用于所述服务器,所述方法包括:
3、获取n个所述服务器应用中每个所述服务器应用的存储需求信息,其中,所述存储需求信息用于指示对应的所述服务器应用对产生的应用日志进行缓存所需要的存储空间需求;
4、为n个服务器应用中每个所述服务器应用分配满足对应的所述存储需求信息的缓存队列,得到m个所述缓存队列,其中,m个所述缓存队列中每个所述缓存队列用于对n个所述服务器应用中对应的所述服务器应用所产生的应用日志进行缓存,m为大于或者等于n的整数;
5、从m个所述缓存队列中提取所述应用日志进行落盘。
6、可选的,所述获取n个所述服务器应用中每个所述服务器应用的存储需求信息,包括:
7、采集n个所述服务器应用中每个所述服务器应用的历史队列使用参数,其中,所述历史队列使用参数用于指示对应的所述服务器应用对历史缓存队列的使用情况,所述历史缓存队列为历史阶段为所述服务器应用分配的缓存队列;
8、根据所述历史队列使用参数生成对应的所述服务器应用的所述存储需求信息。
9、可选的,所述采集n个所述服务器应用中每个所述服务器应用的历史队列使用参数,包括:
10、采集n个所述服务器应用中每个所述服务器应用的历史队列利用率,其中,所述历史队列利用率为历史队列使用容量和历史队列总容量的第一比值;
11、将所述历史队列利用率确定为所述历史队列使用参数;
12、所述根据所述历史队列使用参数生成对应的所述服务器应用的所述存储需求信息,包括:
13、在所述历史队列利用率大于目标利用率阈值的情况下,根据所述历史队列使用容量和所述目标利用率阈值的第二比值生成期望队列总容量,其中,所述期望队列总容量大于所述第二比值,所述期望队列总容量为所述历史缓存队列待调整至的总容量;
14、将所述期望队列总容量确定为所述存储需求信息。
15、可选的,所述为n个服务器应用中每个所述服务器应用分配满足对应的所述存储需求信息的缓存队列,得到m个所述缓存队列,包括以下之一:
16、在n个所述服务器应用中第i个所述服务器应用的所述存储需求信息为第i个所述期望队列总容量,并且所述服务器允许为单个缓存队列分配的最大容量大于或者等于第i个所述期望队列总容量的情况下,为第i个所述服务器应用分配容量大小至少为第i个所述期望队列总容量的缓存队列;
17、在n个所述服务器应用中第i个所述服务器应用的所述存储需求信息为第i个所述期望队列总容量,并且所述服务器允许为单个缓存队列分配的最大容量小于第i个所述期望队列总容量的情况下,计算第i个所述期望队列总容量和所述最大容量的第三比值p;在p为整数的情况下,为第i个所述服务器应用分配至少p个容量大小为所述最大容量的缓存队列;在p为非整数的情况下,计算第i个所述期望队列总容量和p+1的第四比值q;为第i个所述服务器应用分配p+1个容量大小大于或者等于q的缓存队列,p和q为正数。
18、可选的,在所述为n个服务器应用中每个所述服务器应用分配满足对应的所述存储需求信息的缓存队列,得到m个所述缓存队列之后,所述方法还包括:
19、检测m个所述缓存队列中每个所述缓存队列的队列利用率,其中,所述队列利用率为对应的所述缓存队列的队列使用容量和队列总容量的第五比值;
20、将每个所述缓存队列记录为一个历史缓存队列,并将每个所述缓存队列的所述队列利用率记录为对应的所述历史缓存队列的历史队列使用参数。
21、可选的,所述从m个所述缓存队列中提取所述应用日志进行落盘,包括:
22、对m个所述缓存队列执行r轮所述应用日志的提取,直至m个所述缓存队列中的所述应用日志均已被提取,得到初始应用日志序列;
23、按照所述应用日志的日志生成时间对所述初始应用日志序列中的所述应用日志进行排序,得到目标应用日志序列。
24、可选的,所述对m个所述缓存队列执行r轮所述应用日志的提取,包括:
25、通过如下步骤对m个所述缓存队列执行r轮中的第t轮所述应用日志的提取:
26、获取目标提取顺序,其中,目标提取顺序为预先设置的m个所述缓存队列的被提取所述应用日志的顺序;
27、按照所述目标提取顺序依次从m个所述缓存队列的每个所述缓存队列中提取出k个所述应用日志,其中,k为大于或者等于1的整数。
28、可选的,所述按照所述应用日志的日志生成时间对所述初始应用日志序列中的所述应用日志进行排序,得到目标应用日志序列,包括:
29、从所述初始应用日志序列中每个所述应用日志的头信息中提取出时间参数信息,其中,所述时间参数信息用于指示对应的所述应用日志的日志生成时间;
30、按照所述时间参数信息对所述初始应用日志序列中的所述应用日志进行排序,得到目标应用日志序列。
31、可选的,在所述为n个服务器应用中每个所述服务器应用分配满足对应的所述存储需求信息的缓存队列,得到m个所述缓存队列之后,方法还包括:
32、在n个所述服务器应用中目标服务器应用存在目标应用日志待存储的情况下,检测所述目标服务器应用对应的目标缓存队列当前的存储状态;
33、在所述存储状态用于指示所述目标缓存队列已经没有剩余存储空间的情况下,根据所述目标应用日志的目标日志等级和所述目标缓存队列中当前已经缓存的多个参考应用日志的参考日志等级对所述目标应用日志执行目标存储操作,其中,日志等级用于指示对应的日志的重要程度。
34、可选的,所述根据所述目标应用日志的目标日志等级和所述目标缓存队列中当前已经缓存的多个参考应用日志的参考日志等级对所述目标应用日志执行目标存储操作,包括:
35、从多个所述参考应用日志中定位出所述参考日志等级小于所述目标日志等级的一个候选应用日志;
36、将所述目标存储操作确定为使用所述目标应用日志对所述候选应用日志进行覆盖。
37、可选的,所述从多个所述参考应用日志中定位出所述参考日志等级小于所述目标日志等级的一个候选应用日志,包括:
38、按照日志生成时间顺序依次从多个所述参考应用日志中获取一个备选应用日志,并比对所述备选应用日志的所述参考日志等级和所述目标日志等级,其中,所述日志生成时间越早的所述参考应用日志越先被获取;
39、在所述备选应用日志的所述参考日志等级小于所述目标日志等级的情况下,将所述备选应用日志确定为所述候选应用日志;
40、在所述备选应用日志的所述参考日志等级大于或者等于所述目标日志等级的情况下,继续按照所述日志生成时间顺序从多个所述参考应用日志中获取下一个所述备选应用日志。
41、根据本技术实施例的另一个实施例,还提供了一种日志的落盘装置,服务器上运行了n个服务器应用,n为大于1的整数,所述装置应用于所述服务器,所述装置包括:
42、获取模块,用于获取n个所述服务器应用中每个所述服务器应用的存储需求信息,其中,所述存储需求信息用于指示对应的所述服务器应用对产生的应用日志进行缓存所需要的存储空间需求;
43、分配模块,用于为n个服务器应用中每个所述服务器应用分配满足对应的所述存储需求信息的缓存队列,得到m个所述缓存队列,其中,m个所述缓存队列中每个所述缓存队列用于对n个所述服务器应用中对应的所述服务器应用所产生的应用日志进行缓存,m为大于或者等于n的整数;
44、提取模块,用于从m个所述缓存队列中提取所述应用日志进行落盘。
45、根据本技术的又一个实施例,还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行上述任一项方法实施例中的步骤。
46、根据本技术的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
47、根据本技术的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
48、在本技术实施例中,提出了一种日志的落盘方法,服务器上运行了n个服务器应用,n为大于1的整数,服务器首先获取n个服务器应用中每个服务器应用的存储需求信息,存储需求信息可以指示对应的服务器应用对产生的应用日志进行缓存所需要的存储空间需求;然后为n个服务器应用中每个服务器应用分配满足对应的存储需求信息的缓存队列,得到m个缓存队列,m个缓存队列中每个缓存队列可以对n个服务器应用中对应的服务器应用所产生的应用日志进行缓存,m为大于或者等于n的整数;最后从m个缓存队列中提取应用日志进行落盘,通过上述方式即使是多个服务器应用同时产生应用日志,即需要同时缓存多个应用日志,也可以将不同服务器应用产生的应用日志分别缓存到不同服务器应用分配到的缓存队列中,避免了资源抢占的问题,从而避免了现有技术中服务器应用向缓存队列中缓存应用日志时,需要等待其他服务器应用完成缓存导致缓存的实时性较差的问题,确保了每个服务器应用的缓存队列中存储的应用日志与服务器应用的行为保持一致。采用上述技术方案,解决了相关技术中,应用日志的缓存的实时性较差等问题,实现了提升了应用日志缓存的实时性的技术效果。
本文地址:https://www.jishuxx.com/zhuanli/20240929/312003.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。