CN117112522A - 并发进程日志管理方法、装置、设备和存储介质 - Google Patents
并发进程日志管理方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN117112522A CN117112522A CN202311105405.7A CN202311105405A CN117112522A CN 117112522 A CN117112522 A CN 117112522A CN 202311105405 A CN202311105405 A CN 202311105405A CN 117112522 A CN117112522 A CN 117112522A
- Authority
- CN
- China
- Prior art keywords
- exclusive
- log
- file
- log file
- lock
- 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
- 238000000034 method Methods 0.000 title claims abstract description 191
- 230000008569 process Effects 0.000 title claims abstract description 147
- 238000007726 management method Methods 0.000 title claims abstract description 39
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 238000005096 rolling process Methods 0.000 claims description 27
- 230000006835 compression Effects 0.000 claims description 11
- 238000007906 compression Methods 0.000 claims description 11
- 230000001174 ascending effect Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 5
- 230000001427 coherent effect Effects 0.000 abstract description 4
- 238000011835 investigation Methods 0.000 abstract 1
- 230000000903 blocking effect Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000013024 troubleshooting Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种并发进程日志管理方法、装置、设备和存储介质。主要技术方案包括:访问汇总日志文件,以及申请汇总日志文件的汇总独占锁;若汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁;将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件;将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。本申请通过从日志空间中查找匹配各专属日志文件,将各进程已记录完成的专属日志文件进行汇总,实现并发进程日志的连贯记录和管理,达到方便后续的问题排查的效果。
Description
技术领域
本申请涉及日志管理技术领域,特别是涉及一种并发进程日志管理方法、装置、设备和存储介质。
背景技术
众所周知,进程日志在应对运行程序错误或异常的情况下扮演着极其重要的角色,它是排查问题、定位操作系统故障的关键工具,进而也为操作系统的正常维护提供了便利,因此,进程日志信息的完整性以及上下文的连贯性就显得至关重要。但是,大家熟知,一般在同一个应用程序中,可能会有多个进程同时运行,此时,就可能存在多个进程同时向同一个日志文件中写入日志的情况,若不采取有效措施,可能会出现一系列的异常情况,比如日志覆盖、交叉和串行等。
在传统的实现方式中,一般对并发进程日志的管理采用两种方式,第一种方式是给进程日志文件加锁,使得同一时间只有一个进程能够进行日志的写入操作,其他进程则需要等待。第二种方式是创建一个单独的守护进程来管理工作进程的日志,以便于较好地缓解工作效率的问题。
然而,上述两种方式均存在一些缺陷,第一种方式明显会严重影响程序的执行效率,特别是在高并发情况下尤为明显。第二种方式中,守护进程的创建会增加系统资源的占用,同时,当并发较低时,守护进程可能会长时间处于闲置等待状态,进而影响系统的整体性能。此外,在某些情况下,应用程序本身无法控制进程的并发,即无法主动创建守护进程,还可能会增加与其他程序的耦合性,以至于增大研发人员的工作难度。
发明内容
基于此,本申请提供了一种并发进程日志管理方法、装置、设备和存储介质,通过从日志空间中查找匹配各专属日志文件,将各进程已记录完成的专属日志文件进行汇总,实现并发进程日志的连贯记录和管理,达到方便后续的问题排查、性能优化和系统监控等工作的效果。
第一方面,提供一种并发进程日志管理方法,该方法包括:
访问汇总日志文件,以及申请汇总日志文件的汇总独占锁;
若汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁;
将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件;
将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。
根据本申请实施例中一种可实现的方式,该方法还包括:
将申请失败的专属独占锁对应的专属日志文件确定为记录未完成专属文件,以及忽略对记录未完成专属文件的收集操作。
根据本申请实施例中一种可实现的方式,该方法还包括:
计算汇总日志文件的汇总大小值,将汇总大小值和预设最大汇总值进行比较;
在汇总大小值小于预设最大汇总值时,释放汇总独占锁;
在汇总大小值大于预设最大汇总值时,进行备份压缩和/或日志滚动操作。
根据本申请实施例中一种可实现的方式,在汇总大小值大于预设最大汇总值时,进行备份压缩和/或日志滚动操作,包括:
在汇总大小值大于预设最大汇总值时,对汇总日志文件进行压缩备份,得到压缩备份文件;
计算压缩备份文件的备份数量值,将备份数量值与预设最大数量值进行比较;
在备份数量值小于预设最大数量值时,释放汇总独占锁;
在备份数量值大于预设最大数量值时,进行日志滚动操作。
根据本申请实施例中一种可实现的方式,进行日志滚动操作,包括:
获取日志空间内最大编号备份文件,以及将最大编号备份文件移除;
对当前压缩备份文件进行编号,得到最小编号压缩备份文件;
将剩余编号压缩备份文件按照编号大小的顺便由小到大依次排列至最小编号压缩备份文件之后以完成滚动。
根据本申请实施例中一种可实现的方式,各进程的专属日志文件的记录过程,包括:
响应于进程启动请求,获取进程的进程标识符;
根据进程标识符,创建进程的专属日志文件并进行专属日志文件命名;
申请专属日志文件的专属独占锁;
若专属独占锁申请成功,则进行对专属日志文件的日志记录操作。
根据本申请实施例中一种可实现的方式,则进行对专属日志文件的日志记录操作,包括:
对专属日志文件进行清空操作;
将进程执行期间生成的专属日志内容写入专属日志文件,以及将专属日志文件存储至日志空间;
在进程结束前将专属独占锁释放,以完成对专属日志文件的记录过程。
第二方面,提供了一种并发进程日志管理装置,该装置包括:
汇总申请单元,用于访问汇总日志文件,以及申请汇总日志文件的汇总独占锁;
汇总查找单元,用于若汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁;
汇总确定单元,用于将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件;
汇总结束单元,用于将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。
第三方面,提供了一种计算机设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的计算机指令,计算机指令被至少一个处理器执行,以使至少一个处理器能够执行上述第一方面中涉及的方法。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机指令,其特征在于,计算机指令用于使计算机执行上述第一方面中涉及的方法。
根据本申请实施例所提供的技术内容,访问汇总日志文件,以及申请汇总日志文件的汇总独占锁;若汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁;将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件;将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。上述操作,通过从日志空间中查找匹配各专属日志文件,将各进程已记录完成的专属日志文件收集汇总到汇总日志文件中,实现并发进程日志的连贯记录和汇总,方便后续的问题排查、性能优化和系统监控等工作。
附图说明
图1为一个实施例中一种并发进程日志管理方法的流程示意图;
图2为一个实施例中一种并发进程日志管理方法中专属日志文件的记录过程的流程示意图;
图3为一个实施例中一种并发进程日志管理方法的优选流程示意图;
图4为一个实施例中并发进程日志管理装置的结构框图;
图5为一个实施例中计算机设备的示意性结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个或多个实施例中,本申请提供的一种并发进程日志管理方法,可以应用于计算机设备,该计算机设备可以包括终端或服务器。具体地,计算机设备访问汇总日志文件,以及申请汇总日志文件的汇总独占锁;若汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁;将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件;将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。即计算机设备通过从日志空间中查找匹配各专属日志文件,将各进程已记录完成的专属日志文件进行汇总,实现并发进程日志的连贯记录和管理。
图1为本申请实施例提供的一种并发进程日志管理方法的流程图。该方法可以包括以下步骤:
步骤S101:访问汇总日志文件,以及申请汇总日志文件的汇总独占锁。
其中,汇总日志文件是唯一的,汇总日志文件采用固定文件名进行命名,以使得各进程均可以访问汇总日志文件,且无需进行进程间的相互通信,汇总日志文件可以包含多个专属日志文件的专属日志内容。且汇总独占锁的申请有两种方式,阻塞方式和非阻塞方式,阻塞方式和非阻塞方式是对操作请求者在等待返回结果时的状态描述,若为阻塞方式,在操作请求结果返回前,当前线程会被挂起即一直处于等待状态,得到结果之后才会返回;而非阻塞方式,如果不能立刻得到结果,系统不会挂起当前线程,而是直接返回错误信息。本申请采用的即为非阻塞方式,当汇总独占锁被任意一个进程申请成功时,其它进程则会自动结束申请操作,而不会进行等待。
这里,针对单个应用程序,当前的各进程均可以对汇总日志文件进行访问,且申请汇总日志文件的汇总独占锁,但是,仅可以由一个进程申请到汇总独占锁,且由该进程进行日志的汇总管理操作。需要说明的是,由于汇总日志文件是唯一的,每次日志收集汇总操作仅需要创建一个汇总日志文件,因此,在访问汇总日志文件前,可以先执行一个检测的操作,检测是否存在汇总日志文件,若存在汇总日志文件,则可以直接访问汇总日志文件,以及申请汇总日志文件的汇总独占锁;若不存在汇总日志文件,则可以先创建汇总日志文件,再对汇总日志文件进行访问,以防止汇总日志文件已存在的情况下再去创建新的汇总日志文件而导致执行失败的问题。
步骤S103:若汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁。
其中,专属日志文件有多个,每个专属日志文件对应一个进程,对该进程执行期间的日志内容进行记录。
这里,若汇总独占锁申请成功,说明此时没有其它进程在执行日志汇总的操作,因此,当前进程可以执行收集各进程已记录完成的专属日志文件并进行汇总的操作。由于各进程在执行期间的专属日志内容均可以被记录到专属日志文件中,所以,在各进程执行结束后,可以由后续进程将已经执行完毕的专属日志文件收集到一个汇总的日志文件中,以实现对单独记录完成的各进程的专属日志文件的收集管理的操作。具体地,各专属日志文件均有对应的专属日志文件命名,因此,可以按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁。其中,申请方式仍然采用的是非租塞方式。
需要说明的是,这里在按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件时,可以同时读取该专属日志文件的创建时间。在进行专属日志文件的专属日志内容的汇总收集时,可以优先汇总创建时间靠前的专属日志文件的专属日志内容,以实现将汇总日志文件中的专属日志内容按照时间顺序进行排列,方便后期工作人员的查看。
步骤S105:将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件。
这里,若专属独占锁申请成功,则说明对应进程已经执行完毕并释放了专属日志文件的专属独占锁,因此,可以将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件。
步骤S107,将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。
这里,将记录完成专属文件的专属日志内容拷贝至汇总日志文件的末尾,在拷贝完成后,将申请成功的专属独占锁释放,以及将申请成功的专属独占锁对应的专属日志文件即记录完成专属文件删除。实现将已经执行完毕且记录完成的专属日志文件收集到一个汇总的日志文件中,且由于该记录完成专属文件的专属日志文件已经被拷贝至汇总日志文件,所以,该记录完成专属文件也就没有存在的必要了,可以将各专属日志文件删除,以释放内存空间。同时,释放汇总独占锁,以完成对专属日志文件的收集管理,进而实现对并发进程日志的连贯记录和汇总,达到方便后续的问题排查、性能优化和系统监控等工作的效果。
可以看出,本申请实施例通过访问汇总日志文件,以及申请汇总日志文件的汇总独占锁;若汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁;将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件;将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。上述操作,通过从日志空间中查找匹配各专属日志文件,将各进程已记录完成的专属日志文件收集汇总到汇总日志文件中,实现并发进程日志的连贯记录和汇总,方便后续的问题排查、性能优化和系统监控等工作。
在一个实施例中,该方法还包括:将申请失败的专属独占锁对应的专属日志文件确定为记录未完成专属文件,以及忽略对记录未完成专属文件的收集操作。
具体地,申请各专属日志文件的专属独占锁,若专属独占锁申请失败,则说明该专属独占锁对应的专属日志文件正在被记录进程持有,意味着该专属日志文件的记录过程尚未执行结束,即将申请失败的专属独占锁对应的专属日志文件确定为记录未完成专属文件,以及忽略对记录未完成专属文件的收集操作。需要说明的是,这里,也可以对记录未完成专属文件进行标记,在当前进程的汇总收集操作完成之后,下次进程进行汇总操作时,可以优先查找匹配已经进行过标记的专属日志文件,且申请对应专属独占锁,实现对已经进行过标记的专属日志文件优先汇总处理操作,以便于提高整体专属日志文件的处理效率的效果。
上述操作,在专属独占锁申请失败时,意味着该专属独占锁对应的专属日志文件的记录过程尚未执行结束,则忽略对其的收集操作。以确保收集汇总到汇总日志文件中的专属日志文件均为已经记录完成的文件,达到保障进程日志内容的连贯记录和完整性的效果。
在一个实施例中,计算汇总日志文件的汇总大小值,将汇总大小值和预设最大汇总值进行比较;在汇总大小值小于预设最大汇总值时,释放汇总独占锁;在汇总大小值大于预设最大汇总值时,进行备份压缩和/或日志滚动操作。
这里,在完成对各进程的专属日志文件的收集汇总操作后,可以判断汇总日志文件的汇总大小值,以确定是否超过预设的单个汇总日志文件的最大限制,即计算汇总日志文件的汇总大小值,将汇总大小值和预设最大汇总值进行比较,若汇总大小值小于或等于预设最大汇总值,即说明汇总日志文件并未超过预设的单个汇总日志文件的最大限制,则可以保持汇总日志文件的当前状态,且直接释放汇总独占锁,结束对当前专属日志文件的收集管理操作。在汇总大小值大于预设最大汇总值时,说明汇总日志文件超过了预设的单个汇总日志文件的最大限制,此时,可以执行备份压缩和/或日志滚动操作,在执行完备份压缩和/或日志滚动操作后,才可以释放汇总独占锁,以完成对专属日志文件的收集管理操作。
上述操作,在汇总大小值大于预设最大汇总值时,将汇总日志文件执行压缩备份操作,通过对汇总日志文件进行备份压缩实现对汇总日志文件大小的控制,达到减少对系统资源的占用,提高系统整体性能的效果。
在一个实施例中,在汇总大小值大于预设最大汇总值时,进行备份压缩和/或日志滚动操作,包括:在汇总大小值大于预设最大汇总值时,对汇总日志文件进行压缩备份,得到压缩备份文件;计算压缩备份文件的备份数量值,将备份数量值与预设最大数量值进行比较;在备份数量值小于预设最大数量值时,释放汇总独占锁;在备份数量值大于预设最大数量值时,进行日志滚动操作。
这里,为了确定汇总日志文件是否超过预设的单个汇总日志文件的最大限制,可以将汇总日志文件的汇总大小值与预设最大汇总值进行比对,在汇总大小值大于预设最大汇总值时,将汇总日志文件进行压缩备份,得到压缩备份文件。且由于已经对汇总日志文件进行了压缩,因此,可以将汇总日志文件清空以释放内存空间。在得到压缩备份文件后,可以计算压缩备份文件的备份数量值,判断当前日志空间中已存在的压缩备份文件数量是否达到最大限制,即将压缩备份文件的备份数量值与预设最大数量值进行比较;在备份数量值小于或等于预设最大数量值时,说明已存在的压缩备份文件数量并未达到最大限制,则可以将压缩备份文件存储至日志空间且直接释放汇总独占锁,结束当前对专属日志文件的收集管理,无需进行日志滚动的操作。但在备份数量值大于预设最大数量值时,说明已存在的压缩备份文件数量达到最大限制,则可以进行日志滚动操作。
上述操作,在备份数量值大于预设最大数量值时,进行日志滚动操作,以实现对压缩备份文件的数据更新,更有利用后续的问题排查、性能优化和系统监控等工作。
在一个实施例中,进行日志滚动操作,包括:获取日志空间内最大编号备份文件,以及将最大编号备份文件移除;对当前压缩备份文件进行编号,得到最小编号压缩备份文件;将剩余编号压缩备份文件按照编号大小的顺便由小到大依次排列至最小编号压缩备份文件之后以完成滚动。
这里,由于在备份数量值小于或等于预设最大数量值时,说明已存在的压缩备份文件数量并未达到最大限制,则可以将压缩备份文件存储至日志空间,同时可以按照存储的顺序由小到大进行编号。因此,在本次的收集汇总操作中,若汇总大小值大于预设最大汇总值时,可以获取到日志空间内最大编号备份文件,该文件是最早存储于日志空间的备份文件,且可以将该最大编号备份文件移除。同时,对当前压缩备份文件进行编号,得到最小编号压缩备份文件;以及将剩余编号压缩备份文件按照编号大小的顺便由小到大依次排列至最小编号压缩备份文件之后以完成滚动。具体地,可以进行举例说明下,假设压缩备份文件的预设最大数量值为10,而当前日志空间中的备份数量值为11,即备份数量值大于预设最大数量值,此时,获取编号为10的最大编号备份文件,且将该最大编号备份文件移除。同时,对当前压缩备份文件进行编号,且编号为1,则剩余编号1-9的压缩备份文件按照编号大小的顺便由小到大依次排列至最小编号压缩备份文件之后,且编号变更为2-10。以此类推,实现用当前压缩备份文件取代较旧的压缩备份文件,以达到保证日志数据的更新的效果。
上述操作,由于日志空间是有限制的,因此,在备份数量值大于预设最大数量值时,可以将最大编号备份文件删除,实现用当前压缩备份文件取代较旧的压缩备份文件,以达到保证日志数据的更新完成日志滚动的效果。
在一个实施例中,各进程的专属日志文件的记录过程,包括以下步骤:
步骤S201,响应于进程启动请求,获取进程的进程标识符。
其中,进程标识符可以是pid(Process Identifier),其是一个进程的基本属性,作用类似于每个人的身份证号码。根据进程标识符,可以精确地定位一个进程。一个进程标识符唯一对应一个进程,而多个进程标识符可以对应同一个程序。且进程标识符的类型为pid_t,其本质上是一个无符号整型的类型别名。
这里,在进程启动时,由计算机操作系统,例如Linux系统提供的进程查询指令或者采用编程语言提供的接口来获取当前进程的进程标识符。
步骤S202,根据进程标识符,创建进程的专属日志文件并进行专属日志文件命名。
这里,在获取到进程标识符后,可以根据进程标识符,创建一个专属于当前进程的专属日志文件,且为了保持命名的一致性,采用特定的命名规则,并在文件名中包含进程的pid信息。例如,可以使用“进程名+pid+.log”的形式来命名专属日志文件,以达到确保不同进程间的专属日志文件相互独立存储,避免了混淆和冲突的可能性。
步骤S203,申请专属日志文件的专属独占锁。
这里,在专属日志文件创建完成之后,可以申请专属日志文件的专属独占锁。由于专属独占锁只能由一个进程获得,当该进程获取到该专属独占锁时,其他进程则无法获取该专属独占锁,以用于保障只有持有专属独占锁的进程可以对专属日志文件进行读、写的操作。需要说明的是,该申请采用的也为非阻塞方式,但是,该申请一般情况下均可以申请成功,因为每一个进程对应一个专属独占锁,一般不会存在两个进程同时申请一个专属独占锁的可能性。
步骤S204,若专属独占锁申请成功,对专属日志文件进行清空操作。
这里,若专属独占锁申请成功,则清空专属日志文件,此步骤是以防万一的操作,怕专属日志文件中存在别的进程的日志内容或者是存在该进程之前记录的不完整的内容,因此,可以进行清空专属日志文件的操作,以确保最终记录完成的专属日志文件的专属日志内容均为当前进程在执行期间生成的内容。
步骤S205,将进程执行期间生成的专属日志内容写入专属日志文件,以及将专属日志文件存储至日志空间。
这里,在将进程执行期间生成的专属日志内容均写入专属日志文件,并将专属日志文件存储至日志空间,以便于后续进程可以按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件。
步骤S206,在进程结束前将专属独占锁释放,以完成对专属日志文件的记录过程。
这里,在进程结束前将专属独占锁释放,以实现完成对专属日志文件的形成记录的操作。
上述操作,通过将进程执行期间的专属日志内容均记录至专属日志文件,在进程结束前将专属独占锁释放,以实现完成对专属日志文件的记录过程,达到将各进程执行期间的日志记录到独立的专属日志文件中,保持专属日志文件的完整性和连贯性的效果。
结合上述实施例中的实现方式,下面结合图3对本申请实施例提供的一优选的方法流程进行举例描述。如图3所示,该方法可以包括以下步骤:
步骤S301,检测是否存在汇总日志文件,若存在,则执行步骤S302;若不存在,则执行步骤S303;
步骤S302,访问汇总日志文件。
步骤S303,创建并访问汇总日志文件。
步骤S304,申请汇总日志文件的汇总独占锁,若汇总独占锁申请成功,则执行步骤S305;若汇总独占锁申请失败,则执行步骤S314。
步骤S305,按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁;若专属独占锁申请成功,则执行步骤S306;若专属独占锁申请失败,则执行步骤S315。
步骤S306,将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。
步骤S307,计算汇总日志文件的汇总大小值,将汇总大小值和预设最大汇总值进行比较;在汇总大小值大于预设最大汇总值时,执行步骤S308;在汇总大小值小于预设最大汇总值时,执行步骤S313。
步骤S308,对汇总日志文件进行压缩备份,得到压缩备份文件。
步骤S309,计算压缩备份文件的备份数量值,将备份数量值与预设最大数量值进行比较;在备份数量值大于预设最大数量值时,执行步骤S310;在备份数量值小于预设最大数量值时,执行步骤S313。
步骤S310,获取日志空间内最大编号备份文件,以及将最大编号备份文件移除。
步骤S311,对当前压缩备份文件进行编号,得到最小编号压缩备份文件。
步骤S312,将剩余编号压缩备份文件按照编号大小的顺便由小到大依次排列至最小编号压缩备份文件之后以完成滚动。
步骤S313,释放汇总独占锁,以完成对专属日志文件的收集管理。
步骤S314,结束当前收集进程。
步骤S315,将申请失败的专属独占锁对应的专属日志文件确定为记录未完成专属文件,以及忽略对记录未完成专属文件的收集操作。
应该理解的是,虽然图1-图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本申请中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述方法实施例可以应用于多种应用场景,例如可以包括但不限于将进程执行期间的专属日志内容记录到专属日志文件,在进程执行结束后,由后续进程将已经执行完毕且记录完成的专属日志文件的专属日志内容收集汇总到汇总日志文件中。并判断汇总日志文件的大小是否超过最大限制,如果是,则执行压缩备份和日志滚动操作,以及释放汇总日志文件的汇总专属锁,以结束汇总日志的收集操作。实现通过将各进程已记录完成的专属日志文件进行汇总,对并发进程日志进行连贯记录和管理;同时,对汇总日志文件进行备份压缩和日志滚动的操作,达到减少对系统资源的占用,提高系统整体性能的效果的应用场景。
图4为本申请实施例提供的一种并发进程日志管理装置的结构示意图,用以执行如图1-图3中所示的方法流程。如图4所示,该装置可以包括:汇总申请单元401、汇总查找单元403、汇总确定单元405以及汇总结束单元407。其中各组成模块的主要功能如下:
汇总申请单元401,用于访问汇总日志文件,以及申请汇总日志文件的汇总独占锁;
汇总查找单元403,用于若汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各专属日志文件的专属独占锁;
汇总确定单元405,用于将申请成功的专属独占锁对应的专属日志文件确定为记录完成专属文件;
汇总结束单元407,用于将记录完成专属文件的专属日志内容拷贝至汇总日志文件,且将申请成功的专属独占锁释放,以及释放汇总独占锁,以完成对专属日志文件的收集管理。
在一个实施例中,汇总查找单元403,还用于:
将申请失败的专属独占锁对应的专属日志文件确定为记录未完成专属文件,以及忽略对记录未完成专属文件的收集操作。
在一个实施例中,该装置,还用于:
计算汇总日志文件的汇总大小值,将汇总大小值和预设最大汇总值进行比较;
在汇总大小值小于预设最大汇总值时,释放汇总独占锁;
在汇总大小值大于预设最大汇总值时,进行备份压缩和/或日志滚动操作。
在一个实施例中,该装置,还用于:
在汇总大小值大于预设最大汇总值时,对汇总日志文件进行压缩备份,得到压缩备份文件;
计算压缩备份文件的备份数量值,将备份数量值与预设最大数量值进行比较;
在备份数量值小于预设最大数量值时,释放汇总独占锁;
在备份数量值大于预设最大数量值时,进行日志滚动操作。
在一个实施例中,汇总结束单元407,还用于:
获取日志空间内最大编号备份文件,以及将最大编号备份文件移除;
对当前压缩备份文件进行编号,得到最小编号压缩备份文件;
将剩余编号压缩备份文件按照编号大小的顺便由小到大依次排列至最小编号压缩备份文件之后完成滚动。
在一个实施例中,该装置还用于:
响应于进程启动请求,获取进程的进程标识符;
根据进程标识符,创建进程的专属日志文件并进行专属日志文件命名;
申请专属日志文件的专属独占锁;
若专属独占锁申请成功,则进行对专属日志文件的日志记录操作。
在一个实施例中,该装置还用于:
对专属日志文件进行清空操作;
将进程执行期间生成的专属日志内容写入专属日志文件,以及将专属日志文件存储至日志空间;
在进程结束前将专属独占锁释放,以完成对专属日志文件的记录过程。
上述各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,本申请实施例中可能会涉及到对用户数据的使用,在实际应用中,可以在符合所在国的适用法律法规要求的情况下(例如用户明确同意,对用户切实通知,用户明确授权等),在适用法律法规允许的范围内在本文描述的方案中使用用户特定的个人数据。
根据本申请的实施例,本申请还提供了一种计算机设备、一种计算机可读存储介质。
如图5所示,是根据本申请实施例的计算机设备的框图。计算机设备旨在表示各种形式的数字计算机或移动装置。其中数字计算机可以包括台式计算机、便携式计算机、工作台、个人数字助理、服务器、大型计算机和其它适合的计算机。移动装置可以包括平板电脑、智能电话、可穿戴式设备等。
如图5所示,设备500包括计算单元501、ROM 502、RAM 503、总线504以及输入/输出(I/O)接口505,计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
计算单元501可以根据存储在只读存储器(ROM)502中的计算机指令或者从存储单元508加载到随机访问存储器(RAM)503中的计算机指令,来执行本申请方法实施例中的各种处理。计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501可以包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。在一些实施例中,本申请实施例提供的方法可被实现为计算机软件程序,其被有形地包含于计算机可读存储介质,例如存储单元508。
RAM 503还可存储设备500操作所需的各种程序和数据。计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。
设备500中的输入单元506、输出单元507、存储单元508和通信单元509可以连接至I/O接口505。其中,输入单元506可以是诸如键盘、鼠标、触摸屏、麦克风等;输出单元507可以是诸如显示器、扬声器、指示灯等。设备500能够通过通信单元509与其他设备进行信息、数据等的交换。
需要说明的是,该设备还可以包括实现正常运行所必需的其他组件。也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件和/或它们的组合中实现。
用于实施本申请的方法的计算机指令可以采用一个或多个编程语言的任何组合来编写。这些计算机指令可以提供给计算单元501,使得计算机指令当由诸如处理器等计算单元501执行时使执行本申请方法实施例中涉及的各步骤。
本申请提供的计算机可读存储介质可以是有形的介质,其可以包含或存储计算机指令,用以执行本申请方法实施例中涉及的各步骤。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的等形式的存储介质。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (10)
1.一种并发进程日志管理方法,其特征在于,所述方法包括:
访问汇总日志文件,以及申请所述汇总日志文件的汇总独占锁;
若所述汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各所述专属日志文件的专属独占锁;
将申请成功的所述专属独占锁对应的所述专属日志文件确定为记录完成专属文件;
将所述记录完成专属文件的专属日志内容拷贝至所述汇总日志文件,且将申请成功的所述专属独占锁释放,以及释放所述汇总独占锁,以完成对所述专属日志文件的收集管理。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将申请失败的所述专属独占锁对应的所述专属日志文件确定为记录未完成专属文件,以及忽略对所述记录未完成专属文件的收集操作。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
计算所述汇总日志文件的汇总大小值,将所述汇总大小值和预设最大汇总值进行比较;
在所述汇总大小值小于所述预设最大汇总值时,释放所述汇总独占锁;
在所述汇总大小值大于所述预设最大汇总值时,进行备份压缩和/或日志滚动操作。
4.根据权利要求3所述的方法,其特征在于,所述在所述汇总大小值大于预设最大汇总值时,进行备份压缩和/或日志滚动操作,包括:
在所述汇总大小值大于所述预设最大汇总值时,对所述汇总日志文件进行压缩备份,得到压缩备份文件;
计算所述压缩备份文件的备份数量值,将所述备份数量值与预设最大数量值进行比较;
在所述备份数量值小于所述预设最大数量值时,释放所述汇总独占锁;
在所述备份数量值大于所述预设最大数量值时,进行日志滚动操作。
5.根据权利要求4所述的方法,其特征在于,所述进行日志滚动操作,包括:
获取日志空间内最大编号备份文件,以及将所述最大编号备份文件移除;
对当前所述压缩备份文件进行编号,得到最小编号压缩备份文件;
将剩余编号压缩备份文件按照编号大小的顺便由小到大依次排列至所述最小编号压缩备份文件之后以完成滚动。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述各进程的专属日志文件的记录过程,包括:
响应于进程启动请求,获取所述进程的进程标识符;
根据所述进程标识符,创建所述进程的专属日志文件并进行专属日志文件命名;
申请所述专属日志文件的专属独占锁;
若所述专属独占锁申请成功,则进行对所述专属日志文件的日志记录操作。
7.根据权利要求6所述的方法,其特征在于,所述则进行对所述专属日志文件的日志记录操作,包括:
对所述专属日志文件进行清空操作;
将所述进程执行期间生成的专属日志内容写入所述专属日志文件,以及将所述专属日志文件存储至日志空间;
在进程结束前将所述专属独占锁释放,以完成对所述专属日志文件的记录过程。
8.一种并发进程日志管理装置,其特征在于,所述装置包括:
汇总申请单元,用于访问汇总日志文件,以及申请所述汇总日志文件的汇总独占锁;
汇总查找单元,用于若所述汇总独占锁申请成功,则按照各专属日志文件命名,从日志空间中查找匹配各专属日志文件,以及申请各所述专属日志文件的专属独占锁;
汇总确定单元,用于将申请成功的所述专属独占锁对应的所述专属日志文件确定为记录完成专属文件;
汇总结束单元,用于将所述记录完成专属文件的专属日志内容拷贝至所述汇总日志文件,且将申请成功的所述专属独占锁释放,以及释放所述汇总独占锁,以完成对所述专属日志文件的收集管理。
9.一种计算机设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机指令,所述计算机指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311105405.7A CN117112522A (zh) | 2023-08-30 | 2023-08-30 | 并发进程日志管理方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311105405.7A CN117112522A (zh) | 2023-08-30 | 2023-08-30 | 并发进程日志管理方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117112522A true CN117112522A (zh) | 2023-11-24 |
Family
ID=88794435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311105405.7A Pending CN117112522A (zh) | 2023-08-30 | 2023-08-30 | 并发进程日志管理方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117112522A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349085A (zh) * | 2023-12-01 | 2024-01-05 | 杭州云动智能汽车技术有限公司 | 一种数据存储方法、数据备份方法及装置 |
-
2023
- 2023-08-30 CN CN202311105405.7A patent/CN117112522A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349085A (zh) * | 2023-12-01 | 2024-01-05 | 杭州云动智能汽车技术有限公司 | 一种数据存储方法、数据备份方法及装置 |
CN117349085B (zh) * | 2023-12-01 | 2024-03-05 | 杭州云动智能汽车技术有限公司 | 一种数据存储方法、数据备份方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9280578B1 (en) | Combining transactions in a metadata transaction log | |
CN108664359B (zh) | 一种数据库恢复方法、装置、设备及存储介质 | |
US11531594B2 (en) | Data recovery method and apparatus, server, and computer-readable storage medium | |
CN105573859A (zh) | 一种数据库的数据恢复方法和设备 | |
US20130006932A1 (en) | Physical Replication of Database Subset to Improve Availability and Reduce Resource Cost in a Cloud Environment | |
US11748215B2 (en) | Log management method, server, and database system | |
WO2021169496A1 (zh) | 数据读取方法、装置、设备及存储介质 | |
CN111176887A (zh) | MySQL误操作回滚方法、设备及系统 | |
US20160266924A1 (en) | Apparatus and method for identifying a virtual machine having changeable settings | |
WO2022242372A1 (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
US10223205B2 (en) | Disaster recovery data sync | |
CN106528338A (zh) | 一种远程数据复制方法、存储设备及存储系统 | |
CN114443722A (zh) | 缓存管理方法、装置、存储介质及电子设备 | |
CN117112522A (zh) | 并发进程日志管理方法、装置、设备和存储介质 | |
CN105938446B (zh) | 基于rdma和硬件事务性内存支持的数据复制容错方法 | |
CN111625407B (zh) | Ssd性能测试方法及相关组件 | |
CN105653718A (zh) | 存储磁盘快照环境下保证快照后数据库数据一致性的方法 | |
CN118467628A (zh) | 数据同步方法、存储介质、设备及计算机程序产品 | |
JPH033046A (ja) | ログ記録管理方式 | |
CN112685431B (zh) | 异步缓存方法、装置、系统、电子设备和存储介质 | |
CN115408200A (zh) | 多存储引擎的数据备份方法、装置、电子设备及存储介质 | |
CN114579530A (zh) | 表空间迁移方法、装置、电子设备及计算机可读存储介质 | |
CN112559457A (zh) | 数据访问方法及装置 | |
CN112835967A (zh) | 基于分布式存储系统的数据处理方法、装置、设备和介质 | |
EP3591529B1 (en) | System and method for backup storage garbage collection |
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 |