CN114510394A - 服务器内存的分析方法、装置及计算机可读存储介质 - Google Patents
服务器内存的分析方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114510394A CN114510394A CN202210089250.1A CN202210089250A CN114510394A CN 114510394 A CN114510394 A CN 114510394A CN 202210089250 A CN202210089250 A CN 202210089250A CN 114510394 A CN114510394 A CN 114510394A
- Authority
- CN
- China
- Prior art keywords
- memory
- information
- analyzed
- server
- thread
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种服务器内存的分析方法、装置及计算机可读存储介质。其中,该方法包括:响应服务器内存分析指令,确定待分析进程对应的目标共享内存,其中,待分析进程从服务器中运行的多个进程中选取得到,多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存;获取预先存储在目标共享内存中的内存占用信息;对内存占用信息进行分析,得到分析结果,其中,分析结果表征待分析进程在服务器中的共享内存占用状态。本发明解决了现有技术在统计进程占用服务器的内存情况时所存在的服务器进程堵塞的技术问题。
Description
技术领域
本发明涉及数据存储领域,具体而言,涉及一种服务器内存的分析方法、装置及计算机可读存储介质。
背景技术
对游戏服务器的内存进行优化是游戏优化中很重要的一部分,通过减少游戏服务器中进程内存的使用可以提高单进程用户承载量,从而带来更高收益,还可以降低机器内存的大小,从而减少游戏的运营成本。其中,对游戏服务器的内存优化首先需要得到服务器内存占用分布,然后根据得到的服务器内存占用分布才能适应性地优化对应的代码。
现有技术中,服务器内存分析通常的做法是首先hook(拦截)住程序的malloc(memory allocation,动态内存分配)和free(释放内存),然后使用libuwind(截获内存访问方法)搜集调堆栈信息,通过管道发送给另一个消费者进程进行分析。
但是,在现有的服务器内存分析方法中,由于管道有缓冲区大小限制,因此,如果读端速度慢于写端速度,缓存就会被存满,然后导致写端也就是游戏服务器进程产生阻塞。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种服务器内存的分析方法、装置及计算机可读存储介质,以至少解决现有技术在统计进程占用服务器的内存情况时所存在的服务器进程堵塞的技术问题。
根据本发明实施例的一个方面,提供了一种服务器内存的分析方法,包括:响应服务器内存分析指令,确定待分析进程对应的目标共享内存,其中,待分析进程从服务器中运行的多个进程中选取得到,多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存;获取预先存储在目标共享内存中的内存占用信息;对内存占用信息进行分析,得到分析结果,其中,分析结果表征待分析进程在服务器中的共享内存占用状态。
进一步地,服务器内存的分析方法还包括:在响应服务器内存分析指令,确定待分析进程对应的目标共享内存之前,获取待分析进程所对应的进程标识以及目标共享内存所对应的内存路径;基于进程标识以及内存路径生成目标共享内存所对应的内存标识;在内存路径所在的位置创建目标共享内存,其中,目标共享内存的标识为内存标识。
进一步地,服务器内存的分析方法还包括:在在内存路径所在的位置创建目标共享内存之后,对目标共享内存进行分割处理,得到多个子共享内存,其中,每个子共享内存用于存储待分析进程所包含的多个线程中对应的线程信息;获取待分析进程所包含的多个线程的线程标识;存储每个线程的线程标识至与该线程所对应的子共享内存的预设位置中。
进一步地,服务器内存的分析方法还包括:在在内存路径所在的位置创建目标共享内存之后,获取待分析进程所对应的堆栈信息以及待分析进程对应的内存申请信息,其中,堆栈信息至少包括:目标堆栈的栈深度以及目标堆栈的栈地址,目标堆栈用于存储待分析进程的程序代码,内存申请信息至少包括内存申请标识、内存释放标识、待分析进程所申请的待申请内存的大小、待申请内存的内存地址;将堆栈信息以及内存申请信息写入至目标共享内存中。
进一步地,服务器内存的分析方法还包括:按照待分析进程申请内存和/或释放内存的时间顺序,依次向目标共享内存中写入堆栈信息以及内存申请信息,其中,本次向目标共享内存写入堆栈信息以及内存申请信息的开始写入位置,为上一次向目标共享内存写入堆栈信息以及内存申请信息的结束写入位置。
进一步地,服务器内存的分析方法还包括:在将堆栈信息以及内存申请信息写入至目标共享内存中之后,检测目标共享内存的剩余内存空间;在剩余内存空间小于本次向目标共享内存写入堆栈信息以及内存申请信息所消耗的内存时,从目标共享内存的起始位置写入本次堆栈信息以及本次内存申请信息。
进一步地,服务器内存的分析方法还包括:响应服务器内存分析指令,获取待分析进程所对应的进程标识;基于进程标识从多个共享内存中确定目标共享内存。
进一步地,服务器内存的分析方法还包括:确定待分析进程所包含的多个线程的线程数量;调用与线程数量对应的多个统计线程;基于每个统计线程从对应的子共享内存中读取对应的子线程的线程信息,并对线程信息进行解析,得到每个子线程的内存占用信息。
进一步地,服务器内存的分析方法还包括:从线程信息中的预设字段中读取第一标识,其中,第一标识表征待分析进程对应的内存申请信息的申请类型,申请类型至少包括第一类型和第二类型,第一类型表征待分析进程申请内存,第二类型表征待分析进程释放内存;根据第一标识从线程信息对应的字段中读取每个子线程的内存占用信息。
进一步地,服务器内存的分析方法还包括:在第一标识表征申请类型为第一类型时,基于待分析进程对应的目标堆栈与每个子线程所申请的申请内存之间的第一关系,以及目标堆栈对应的栈数组与待分析进程所申请的总申请内存之间的第二关系从线程信息对应的字段中读取每个子线程的内存占用信息。
进一步地,服务器内存的分析方法还包括:在第一标识表征申请类型为第二类型时,基于第一关系以及第二关系对总申请内存进行更新。
进一步地,服务器内存的分析方法还包括:从内存占用信息中获取目标堆栈中所存储的目标地址;基于目标地址以及存储待分析进程的代码的代码库的起始地址;根据目标地址以及起始地址确定待分析进程的代码所占用的第一内存信息;对第一内存信息以及内存占用信息进行分析,得到分析结果,并以图形化的形式展示分析结果。
根据本发明实施例的另一方面,还提供了一种服务器内存的分析装置,包括:确定模块,用于响应服务器内存分析指令,确定待分析进程对应的目标共享内存,其中,待分析进程从服务器中运行的多个进程中选取得到,多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存;获取模块,用于获取预先存储在目标共享内存中的内存占用信息;分析模块,用于对内存占用信息进行分析,得到分析结果,其中,分析结果表征待分析进程在服务器中的共享内存占用状态。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的服务器内存的分析方法。
根据本发明实施例的另一方面,还提供了电子设备,电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的服务器内存的分析方法。
在本发明实施例中,采用将内存占用信息预先存储在目标共享内存,并基于目标共享内分析待分析进程对应的内存占用信息的方式,在响应服务器内存分析指令之后,确定待分析进程对应的目标共享内存,并获取预先存储在目标共享内存中的内存占用信息,从而对内存占用信息进行分析,得到分析结果。其中,待分析进程从服务器中运行的多个进程中选取得到,多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存,分析结果表征待分析进程在服务器中的共享内存占用状态。
由上述内容可知,由于在本申请将内存占用信息预先存储在目标共享内存中,并且在响应服务器内存分析指令之后,根据待分析进程对应的目标共享内存,对对应的内存占用信息进行分析,因此本申请实现了将获取内存占用信息(即写入内存占用信息)以及分析内存占用信息(即读取内存占用信息)完全分离的效果,从而避免了现有技术中由于管道有缓冲区大小限制所导致的在读端速度小于写端速度时出现服务器进程阻塞的问题,进而减少了服务器程序负载,降低了服务器内存的性能损耗。另外,由于本申请中多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存,因此可避免不同进程之间的数据竞争,从而可清楚准确地存储以及分析所需要的进程的内存占用信息,进而准确统计服务器的内存分布情况,以便操作人员对服务器内存以及整体游戏进行优化。
由此可见,通过本申请的技术方案,达到了将获取内存占用信息以及分析内存占用信息完全分离的目的,从而实现了减少服务器程序负载的技术效果,进而解决了现有技术在统计进程占用服务器的内存情况时所存在的服务器进程堵塞的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的服务器内存的分析方法的流程图;
图2是根据本发明实施例的一种可选的服务器内存的分析方法的流程图;
图3是根据本发明实施例的一种可选的服务器内存的分析方法的流程图;
图4是根据本发明实施例的一种可选的服务器内存的分析方法的流程图;
图5是根据本发明实施例的一种服务器内存的分析装置示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
在现有技术中,服务器内存分析通常的做法通常是首先拦截服务器程序的malloc和free,然后使用libuwind搜集调堆栈信息,通过管道发送给另一个消费者进程进行分析。例如,类似于下面的代码:
其中,每次进程申请内存时,如果OPEN_BACKTRACE开关打开了,handle_malloc函数就会执行。其中,handle_malloc函数会拿到当前调用栈和栈的大小作为统计数据的key(值),并来记录这个栈上申请的内存数据大小,另外,现有技术还需要记录ptr(Pointerrecord,指针记录)和申请的空间大小的对应关系,在服务器释放内存时根据需要减去析构的值。
但是,在现有的服务器内存分析方法中,由于管道有缓冲区大小限制,因此,如果读端速度慢于写端速度,缓存就会被存满,然后导致写端也就是游戏服务器进程产生阻塞。另外,虽然管道也支持设置非阻塞读写,但是这样就必须嵌入到引擎的I/O(input/output,输入/输出)循环中。如果在上层添加缓存则也会使得分析过程变得更加复杂,最重要的是在外放版本的情况下,会影响到服务器的整体性能。
根据本发明实施例,提供了一种服务器内存的分析方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
另外,还需要说明的是,电子设备可作为本发明实施例中的服务器内存的分析方法的执行主体。
图1是根据本发明实施例的一种可选的服务器内存的分析方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,响应服务器内存分析指令,确定待分析进程对应的目标共享内存。
在步骤S102中,待分析进程从服务器中运行的多个进程中选取得到,多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存。其中,服务器可以是云端服务器,也可以是本地服务器。多个进程可以是游戏运行过程中服务器所需要执行的进程。另外,每个进程都有对应的进程标识,例如,进程1的进程标识为第一进程,进程2的进程标识为第二标识。此外,服务器中还设置有多个共享内存,每个进程可分别对应至少一个共享内存。
需要注意到的是,由于本申请中多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存,因此可避免不同进程之间的数据竞争,从而可清楚准确地存储以及分析每个进程的内存占用信息,进而可准确统计服务器的内存分布情况,以便操作人员对服务器内存以及整体游戏进行优化。
步骤S104,获取预先存储在目标共享内存中的内存占用信息。
在步骤S104中,内存占用信息至少包括:待分析进程所对应的堆栈信息、待分析进程对应的内存申请信息、待分析进程所包含的多个线程的线程数量,每个子线程的线程信息以及每个子线程内存占用信息。其中,目标共享内存可划分为多个子共享内存,并且每个子共享内存可用于存储多个线程中对应的线程信息。另外,每个线程都有对应的线程标识,电子设备可存储每个线程的线程标识至于该线程所对应的子共享内存的预设位置中。
需要注意到的是,通过将内存占用信息预先存储在目标共享内存中,本申请实现了将获取内存占用信息以及分析内存占用信息完全分离的效果,从而避免了现有技术中由于管道有缓冲区大小限制所导致的在读端速度小于写端速度时出现服务器进程阻塞的问题,进而减少了服务器程序负载,实现了降低服务器内存的性能损耗的效果。
步骤S106,对内存占用信息进行分析,得到分析结果。
在步骤S106中,分析结果表征待分析进程在服务器中的共享内存占用状态。其中,电子设备可将分析结果以图形化的形式进行展示,例如,通过火焰图的形式展示分析结果。另外,电子设备在得到内存占用信息之后,可首先从内存占用信息中获取目标堆栈中所存储的目标地址,然后获取待分析进程对应的代码库的起始地址,从而电子设备根据目标地址以及其实地址确定待分析进程的代码所占用的第一内存信息,最后电子设备对第一内存信息和内存占用信息进行分析,即可得到分析结果。
基于上述步骤S102至步骤S106的内容可知,在本发明实施例中,采用将内存占用信息预先存储在目标共享内存,并基于目标共享内分析待分析进程对应的内存占用信息的方式,在响应服务器内存分析指令之后,确定待分析进程对应的目标共享内存,并获取预先存储在目标共享内存中的内存占用信息,从而对内存占用信息进行分析,得到分析结果。其中,待分析进程从服务器中运行的多个进程中选取得到,多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存,分析结果表征待分析进程在服务器中的共享内存占用状态。
由上述内容可知,由于在本申请将内存占用信息预先存储在目标共享内存中,并且在响应服务器内存分析指令之后,根据待分析进程对应的目标共享内存,对对应的内存占用信息进行分析,因此本申请实现了将获取内存占用信息(即写入内存占用信息)以及分析内存占用信息(即读取内存占用信息)完全分离的效果,从而避免了现有技术中由于管道有缓冲区大小限制所导致的在读端速度小于写端速度时出现服务器进程阻塞的问题,进而减少了服务器程序负载,降低了服务器内存的性能损耗。另外,由于本申请中多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存,因此可避免不同进程之间的数据竞争,从而可清楚准确地存储以及分析所需要的进程的内存占用信息,进而准确统计服务器的内存分布情况,以便操作人员对服务器内存以及整体游戏进行优化。
由此可见,通过本申请的技术方案,达到了将获取内存占用信息以及分析内存占用信息完全分离的目的,从而实现了减少服务器程序负载的技术效果,进而解决了现有技术在统计进程占用服务器的内存情况时所存在的服务器进程堵塞的技术问题。
在一种可选的实施例中,在响应服务器内存分析指令,确定待分析进程对应的目标共享内存之前,电子设备获取待分析进程所对应的进程标识以及目标共享内存所对应的内存路径,然后基于进程标识以及内存路径生成目标共享内存所对应的内存标识,并在内存路径所在的位置创建目标共享内存,其中,目标共享内存的标识为内存标识。
可选的,如图2所示,在步骤S201中,电子设备首先通过使用待分析进程ID(即进程标识)以及固定文件名称(即内存标识)初始化创建目标共享内存。具体的,电子设备可以将一个特殊文件路径和待分析进程ID作为参数,并使用ftok(一种系统IPC键值的格式转换函数)方法获取一个IPC Key(共享内存的地址),然后电子设备使用shmget(shared memorysegment,一种创建共享内存对象的函数)创建一个目标共享内存,进而电子设备使用shmat(一种将共享内存对象映射到调用进程的地址空间的函数)将该目标共享内存挂载到当前内存空间中内存路径所在的位置上。其中,目标共享内存的标识需要设置为IPC_CREAT,读写权限设置为0666,特殊文件路径即为目标共享内存所对应的内存路径。
在上述过程中,通过创建目标共享内存,可将待分析进程对应的堆栈信息和内存申请信息存储在目标共享内存中,从而有利于电子设备对目标共享内存中的内存占用信息进行分析。
在一种可选的实施例中,在在内存路径所在的位置创建目标共享内存之后,电子设备对目标共享内存进行分割处理,得到多个子共享内存,并获取待分析进程所包含的多个线程的线程标识,从而存储每个线程的线程标识至与该线程所对应的子共享内存的预设位置中。其中,每个子共享内存用于存储待分析进程所包含的多个线程中对应的线程信息。
可选的,如图2所示,在步骤S202中,电子设备可将目标共享内存中的数据按照线程数分割并记录每个线程的信息。具体的,电子设备可将目标共享内存平均分割,得到多个子共享内存,其中,每个子共享内存用于存储待分析进程所包含的多个线程中对应的线程信息,并且每个线程只会使用自己所对应的的子共享内存,从而避免了数据竞争。另外,电子设备还将获取多个线程的线程标识,并且将每个线程的线程标识对应写入自己的子共享内存的预设位置中,其中,后续电子设备在统计进程时需要使用每个线程的线程标识,预设位置可以是子共享内存的头部位置。
需要注意到的是,通过对目标共享内存进行分割处理,得到多个子共享内存,每个线程只会使用自己的共享内存空间,从而避免了数据竞争的问题。
在一种可选的实施例中,在在内存路径所在的位置创建目标共享内存之后,电子设备获取待分析进程所对应的堆栈信息以及待分析进程对应的内存申请信息,并将堆栈信息以及内存申请信息写入至目标共享内存中。其中,堆栈信息至少包括:目标堆栈的栈深度以及目标堆栈的栈地址,目标堆栈用于存储待分析进程的程序代码,内存申请信息至少包括内存申请标识、内存释放标识、待分析进程所申请的待申请内存的大小、待申请内存的内存地址。
可选的,如图2所示,在步骤S204中,电子设备可以使用libunwind获取堆栈信息,具体的,电子设备可使用unw_backtrace方法获取目标堆栈的栈深度和目标堆栈的栈地址。其中,栈地址可以是IP地址。
进一步地,如图2所示,在步骤S205中,电子设备可将堆栈信息以及内存申请信息写入至目标共享内存中。具体的,电子设备从目标共享内存的头部开始按顺序写入堆栈信息以及内存申请信息。其中,在申请内存时,电子设备需要写入用于区分申请目标共享内存和释放目标共享内存的标志、申请的目标共享内存地址和申请的目标共享内存的大小。
在一种可选的实施例中,电子设备按照待分析进程申请内存和/或释放内存的时间顺序,依次向目标共享内存中写入堆栈信息以及内存申请信息,其中,本次向目标共享内存写入堆栈信息以及内存申请信息的开始写入位置,为上一次向目标共享内存写入堆栈信息以及内存申请信息的结束写入位置。
可选的,如图2所示,在步骤S206中,电子设备在将堆栈信息以及内存申请信息写入至目标共享内存中时,需要从上一次向目标共享内存写入堆栈信息以及内存申请信息的结束写入位置开始写入堆栈信息以及内存申请信息,析构内存(即释放内存)时也需要写入用于区分申请目标共享内存和释放目标共享内存的标志。另外。如果没有写入堆栈信息,统计进程可自己记录是在哪个目标堆栈中申请的内存信息。
需要注意到的是,通过按照待分析进程申请内存和/或释放内存的时间顺序,依次向目标共享内存中写入堆栈信息以及内存申请信息,可有效节约内存空间,同时保证了数据写入时的连续性。
在一种可选的实施例中,在将堆栈信息以及内存申请信息写入至目标共享内存中之后,电子设备可检测目标共享内存的剩余内存空间,并在剩余内存空间小于本次向目标共享内存写入堆栈信息以及内存申请信息所消耗的内存时,从目标共享内存的起始位置写入本次堆栈信息以及本次内存申请信息。
可选的,如图2所示,在步骤S205中,电子设备在目标共享内存中多次写入堆栈信息以及内存申请信息时是从上一次写到的结束写入位置开始写入的,但是如果电子设备检测到剩余内存空间不足以本次要写入的堆栈信息和内存信息时,则电子设备将从目标共享内存的起始位置写入本次堆栈信息以及本次内存申请信息。
通过检测目标共享内存的剩余内存空间,可在目标共享内存不足时,及时调整数据写入的位置,从而避免了数据无法写入目标共享内存的问题。
另外,如图2所示,电子设备还可根据内存统计开关是否打开确定是否在目标共享数据中写入数据。具体地,在步骤S203中,步骤S202之后,电子设备就可以打开待分析进程的统计数据开关,从而开始把堆栈信息以及内存申请信息写入目标共享内存,其中,电子设备只有在统计开关打开的情况下才会统计数据。另外,在统计开关打开时,电子设备步骤将重复步骤S204、S205和S206直到统计开关关闭。其中,在步骤S207中,在统计开关关闭后,电子设备将不再统计数据。
在一种可选的实施例中,电子设备响应服务器内存分析指令,获取待分析进程所对应的进程标识,并基于进程标识从多个共享内存中确定目标共享内存。
可选的,如图3所示,在步骤S301中,在响应服务器内存分析指令之后,电子设备开启统计进程。
可选的,电子设备首先获取待分析进程对应的进程标识,然后基于进程标识从多个共享内存中确定目标共享内存,具体地,如图3中的步骤S302所示,电子设备使用和S201相同的方法使用待分析进程ID和固定文件名称初始化目标共享内存。其中,待分析进程ID指出了该统计进程为哪一个服务器进程服务。电子设备根据待分析进程ID可从多个共享内存中确定目标共享内存。
在一种可选的实施例中,电子设备可确定待分析进程所包含的多个线程的线程数量,并调用与线程数量对应的多个统计线程,从而基于每个统计线程从对应的子共享内存中读取对应的子线程的线程信息,并对线程信息进行解析,得到每个子线程的内存占用信息。
可选的,如图3所示,在步骤S303中,电子设备可开启多线程处理数据的模式,根据待分析进程所包含的多个线程的线程数量,调用与线程数量对应的多个统计线程。例如,开启的统计线程数量和多个线程的线程数量保持一致,确保一个统计线程对应服务器进程里的一个线程,从而避免数据竞争的问题,提高数据处理的效率。其中,电子设备可基于每个统计线程从对应的子共享内存中读取对应的子线程的线程信息,并对线程信息进行解析,得到每个子线程的内存占用信息。
进一步地,如步骤S304,电子设备还将判断内存统计是否结束,其中,电子设备可通过信号实现的方式,由于其他进程发起一个信号来停止统计进程。
在一种可选的实施例中,电子设备可从线程信息中的预设字段中读取第一标识,并根据第一标识从线程信息对应的字段中读取每个子线程的内存占用信息。其中,第一标识表征待分析进程对应的内存申请信息的申请类型,申请类型至少包括第一类型和第二类型,第一类型表征待分析进程申请内存,第二类型表征待分析进程释放内存。
可选的,如图2所示,在步骤S305中,在对目标共享内存中的线程信息进行解析时,电子设备可从上次读到的位置开始读取数据,其中,电子设备可从线程信息中的预设字段中读取第一标识。例如,线程信息中的头2位是用于区分待分析进程申请内存和待分析进程释放内存的第一标识,其中,01代表待分析进程申请内存,10代表待分析进程释放内存。另外,电子设备还根据第一标识从线程信息对应的字段中读取每个子线程的内存占用信息。例如,在第一标识为待分析进程申请内存的标识时,电子设备读取申请内存的指针、申请内存的大小,目标堆栈地址的数组和数组大小;在第一标识为待分析进程释放内存时,电子设备读取申请内存的指针。
在一种可选的实施例中,在第一标识表征申请类型为第一类型时,电子设备基于待分析进程对应的目标堆栈与每个子线程所申请的申请内存之间的第一关系,以及目标堆栈对应的栈数组与待分析进程所申请的总申请内存之间的第二关系从线程信息对应的字段中读取每个子线程的内存占用信息。
可选的,如图3所示,在步骤S306中,在第一标识为待分析进程申请内存时,电子设备可获取目标堆栈栈与每个子线程所申请的申请内存之间的对应关系(即第一关系),以及目标堆栈对应的栈数组与待分析进程所申请的总申请内存之间的对应关系(即第二关系)。其中,第一关系与第二关系可理解为两个映射字典。在电子设备根据第一标识从线程信息对应的字段中读取每个子线程的内存占用信息时,电子设备可根据这两个字典从线程信息对应的字段中读取每个子线程的内存占用信息。
另外,如步骤S307,在统计进程结束时,电子设备将每个目标堆栈的栈数组和申请内存大小输出到预设文件里面。
在一种可选的实施例中,在第一标识表征申请类型为第二类型时,电子设备可基于第一关系以及第二关系对总申请内存进行更新。
可选的,在第一标识为待分析释放内存时,电子设备可根据第一关系与第二关系更新总申请内存。
在一种可选的实施例中,电子设备可从内存占用信息中获取目标堆栈中所存储的目标地址,并基于目标地址以及存储待分析进程的代码的代码库的起始地址,从而根据目标地址以及起始地址确定待分析进程的代码所占用的第一内存信息,进而对第一内存信息以及内存占用信息进行分析,得到分析结果,并以图形化的形式展示分析结果。
可选的,如图4所示,在步骤S401中,电子设备可使用pmap(一种查看进程使用了多少内存的工具)获取待分析进程的代码的代码库的起始地址,并且从内存占用信息中获取目标堆栈中所存储的目标地址。然后电子设备可根据目标地址以及起始地址确定待分析进程的代码所占用的第一内存信息。具体的,如步骤S402,电子设备可首先将目标地址减去起始地址,得到elf(executable and linkable format,一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件)文件中记录的地址,然后使用addr2line(一种用于将地址翻译成文件名和行号的命令)获取到对应的文件名称,方法名称以及代码行数。其中,第一内存信息至少包括上述文件名称,方法名称以及代码行数。
进一步地,在步骤S403中,电子设备将第一内存信息以及内存占用信息按照指定格式输出,得到分析结果,然后如S404所示,电子设备使用FlameGraph(一种图处理库)库将分析结果转化为可查看的火焰图。
需要说明的是,在上述过程中,通过将分析结果转化为火焰图的形式,操作人员可直观地看到服务器内存的变化趋势,从而方便操作人员及时对服务器内存进行优化。
由上述内容可知,由于在本申请将内存占用信息预先存储在目标共享内存中,并且在响应服务器内存分析指令之后,根据待分析进程对应的目标共享内存,对对应的内存占用信息进行分析,因此本申请实现了将获取内存占用信息(即写入内存占用信息)以及分析内存占用信息(即读取内存占用信息)完全分离的效果,从而避免了现有技术中由于管道有缓冲区大小限制所导致的在读端速度小于写端速度时出现服务器进程阻塞的问题,进而减少了服务器程序负载,降低了服务器内存的性能损耗。另外,由于本申请中多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存,因此可避免不同进程之间的数据竞争,从而可清楚准确地存储以及分析所需要的进程的内存占用信息,进而准确统计服务器的内存分布情况,以便操作人员对服务器内存以及整体游戏进行优化。
由此可见,通过本申请的技术方案,达到了将获取内存占用信息以及分析内存占用信息完全分离的目的,从而实现了减少服务器程序负载的技术效果,进而解决了现有技术在统计进程占用服务器的内存情况时所存在的服务器进程堵塞的技术问题。
实施例2
根据本发明实施例的另一方面,还提供了一种服务器内存的分析装置,其中,图5是根据本发明实施例的一种服务器内存的分析装置示意图。如图5所示,该装置包括:确定模块501、获取模块503以及分析模块505。
其中,确定模块501,用于响应服务器内存分析指令,确定待分析进程对应的目标共享内存,其中,待分析进程从服务器中运行的多个进程中选取得到,多个进程中的每个进程分别对应设置在服务器中的至少一个共享内存;获取模块503,用于获取预先存储在目标共享内存中的内存占用信息;分析模块505,用于对内存占用信息进行分析,得到分析结果,其中,分析结果表征待分析进程在服务器中的共享内存占用状态。
需要说明的是,上述确定模块501、获取模块503以及分析模块505对应于上述实施例中的步骤S102至步骤S106,三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
可选的,服务器内存的分析装置还包括:第一获取模块、生成模块以及创建模块。其中,第一获取模块用于获取待分析进程所对应的进程标识以及目标共享内存所对应的内存路径;生成模块,用于基于进程标识以及内存路径生成目标共享内存所对应的内存标识;创建模块,用于在内存路径所在的位置创建目标共享内存,其中,目标共享内存的标识为内存标识。
可选的,服务器内存的分析装置还包括:分割模块、第二获取模块以及存储模块。其中,分割模块,用于对目标共享内存进行分割处理,得到多个子共享内存,其中,每个子共享内存用于存储待分析进程所包含的多个线程中对应的线程信息;第二获取模块,用于获取待分析进程所包含的多个线程的线程标识;存储模块,用于存储每个线程的线程标识至与该线程所对应的子共享内存的预设位置中。
可选的,服务器内存的分析装置还包括:第三获取模块以及写入模块。其中,第三获取模块,用于获取待分析进程所对应的堆栈信息以及待分析进程对应的内存申请信息,其中,堆栈信息至少包括:目标堆栈的栈深度以及目标堆栈的栈地址,目标堆栈用于存储待分析进程的程序代码,内存申请信息至少包括内存申请标识、内存释放标识、待分析进程所申请的待申请内存的大小、待申请内存的内存地址;写入模块,用于将堆栈信息以及内存申请信息写入至目标共享内存中。
可选的,上述写入模块还包括:第一写入模块,用于按照待分析进程申请内存和/或释放内存的时间顺序,依次向目标共享内存中写入堆栈信息以及内存申请信息,其中,本次向目标共享内存写入堆栈信息以及内存申请信息的开始写入位置,为上一次向目标共享内存写入堆栈信息以及内存申请信息的结束写入位置。
可选的,服务器内存的分析装置还包括:检测模块以及第二写入模块。其中,检测模块,用于检测目标共享内存的剩余内存空间;第二写入模块,用于在剩余内存空间小于本次向目标共享内存写入堆栈信息以及内存申请信息所消耗的内存时,从目标共享内存的起始位置写入本次堆栈信息以及本次内存申请信息。
可选的,上述确定模块还包括:第四获取模块以及第一确定模块。其中,第四获取模块,用于响应服务器内存分析指令,获取待分析进程所对应的进程标识;第一确定模块,用于基于进程标识从多个共享内存中确定目标共享内存。
可选的,上述第二获取模块还包括:第二确定模块、调用模块以及读取模块。其中,第二确定模块,用于确定待分析进程所包含的多个线程的线程数量;调用模块,用于调用与线程数量对应的多个统计线程;读取模块,用于基于每个统计线程从对应的子共享内存中读取对应的子线程的线程信息,并对线程信息进行解析,得到每个子线程的内存占用信息。
可选的,上述读取模块还包括:第一读取模块以及第二读取模块,其中,第一读取模块,用于从线程信息中的预设字段中读取第一标识,其中,第一标识表征待分析进程对应的内存申请信息的申请类型,申请类型至少包括第一类型和第二类型,第一类型表征待分析进程申请内存,第二类型表征待分析进程释放内存;第二读取模块,用于根据第一标识从线程信息对应的字段中读取每个子线程的内存占用信息。
可选的,上述第二读取模块还包括:第三读取模块,用于在第一标识表征申请类型为第一类型时,基于待分析进程对应的目标堆栈与每个子线程所申请的申请内存之间的第一关系,以及目标堆栈对应的栈数组与待分析进程所申请的总申请内存之间的第二关系从线程信息对应的字段中读取每个子线程的内存占用信息。
可选的,服务器内存的分析装置还包括:更新模块,用于在第一标识表征申请类型为第二类型时,基于第一关系以及第二关系对总申请内存进行更新。
可选的,上述分析模块还包括:第四获取模块、存储模块、第二确定模块以及第一分析模块。其中,第四获取模块,用于从内存占用信息中获取目标堆栈中所存储的目标地址;存储模块,用于基于目标地址以及存储待分析进程的代码的代码库的起始地址;第二确定模块,用于根据目标地址以及起始地址确定待分析进程的代码所占用的第一内存信息;第一分析模块,用于对第一内存信息以及内存占用信息进行分析,得到分析结果,并以图形化的形式展示分析结果。
实施例3
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述实施例1中的服务器内存的分析方法。
实施例4
根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述实施例1中的服务器内存的分析方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种服务器内存的分析方法,其特征在于,包括:
响应服务器内存分析指令,确定待分析进程对应的目标共享内存,其中,所述待分析进程从服务器中运行的多个进程中选取得到,所述多个进程中的每个进程分别对应设置在所述服务器中的至少一个共享内存;
获取预先存储在所述目标共享内存中的内存占用信息;
对所述内存占用信息进行分析,得到分析结果,其中,所述分析结果表征所述待分析进程在所述服务器中的共享内存占用状态。
2.根据权利要求1所述的方法,其特征在于,在响应服务器内存分析指令,确定待分析进程对应的目标共享内存之前,所述方法还包括:
获取所述待分析进程所对应的进程标识以及所述目标共享内存所对应的内存路径;
基于所述进程标识以及所述内存路径生成所述目标共享内存所对应的内存标识;
在所述内存路径所在的位置创建所述目标共享内存,其中,所述目标共享内存的标识为所述内存标识。
3.根据权利要求2所述的方法,其特征在于,在在所述内存路径所在的位置创建所述目标共享内存之后,所述方法还包括:
对所述目标共享内存进行分割处理,得到多个子共享内存,其中,每个子共享内存用于存储所述待分析进程所包含的多个线程中对应的线程信息;
获取所述待分析进程所包含的多个线程的线程标识;
存储每个线程的线程标识至与该线程所对应的子共享内存的预设位置中。
4.根据权利要求2所述的方法,其特征在于,在在所述内存路径所在的位置创建所述目标共享内存之后,所述方法还包括:
获取所述待分析进程所对应的堆栈信息以及所述待分析进程对应的内存申请信息,其中,所述堆栈信息至少包括:目标堆栈的栈深度以及所述目标堆栈的栈地址,所述目标堆栈用于存储所述待分析进程的程序代码,所述内存申请信息至少包括内存申请标识、内存释放标识、所述待分析进程所申请的待申请内存的大小、所述待申请内存的内存地址;
将所述堆栈信息以及所述内存申请信息写入至所述目标共享内存中。
5.根据权利要求4所述的方法,其特征在于,将所述堆栈信息以及所述内存申请信息写入至所述目标共享内存中,包括:
按照所述待分析进程申请内存和/或释放内存的时间顺序,依次向所述目标共享内存中写入所述堆栈信息以及所述内存申请信息,其中,本次向所述目标共享内存写入所述堆栈信息以及所述内存申请信息的开始写入位置,为上一次向所述目标共享内存写入所述堆栈信息以及所述内存申请信息的结束写入位置。
6.根据权利要求5所述的方法,其特征在于,在将所述堆栈信息以及所述内存申请信息写入至所述目标共享内存中之后,所述方法还包括:
检测所述目标共享内存的剩余内存空间;
在所述剩余内存空间小于本次向所述目标共享内存写入所述堆栈信息以及所述内存申请信息所消耗的内存时,从所述目标共享内存的起始位置写入本次堆栈信息以及本次内存申请信息。
7.根据权利要求1所述的方法,其特征在于,响应服务器内存分析指令,确定运行在服务器中的待分析进程所对应的目标共享内存,包括:
响应所述服务器内存分析指令,获取所述待分析进程所对应的进程标识;
基于所述进程标识从多个共享内存中确定所述目标共享内存。
8.根据权利要求3所述的方法,其特征在于,获取预先存储在所述目标共享内存中的内存占用信息,包括:
确定所述待分析进程所包含的多个线程的线程数量;
调用与所述线程数量对应的多个统计线程;
基于每个统计线程从对应的子共享内存中读取对应的子线程的线程信息,并对所述线程信息进行解析,得到每个子线程的内存占用信息。
9.根据权利要求8所述的方法,其特征在于,对所述线程信息进行解析,得到所述每个子线程的内存占用信息,包括:
从所述线程信息中的预设字段中读取第一标识,其中,所述第一标识表征所述待分析进程对应的内存申请信息的申请类型,所述申请类型至少包括第一类型和第二类型,所述第一类型表征所述待分析进程申请内存,所述第二类型表征所述待分析进程释放内存;
根据所述第一标识从所述线程信息对应的字段中读取所述每个子线程的内存占用信息。
10.根据权利要求9所述的方法,其特征在于,根据所述第一标识从所述线程信息对应的字段中读取所述每个子线程的内存占用信息,包括:
在所述第一标识表征所述申请类型为所述第一类型时,基于所述待分析进程对应的目标堆栈与所述每个子线程所申请的申请内存之间的第一关系,以及所述目标堆栈对应的栈数组与所述待分析进程所申请的总申请内存之间的第二关系从所述线程信息对应的字段中读取所述每个子线程的内存占用信息。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在所述第一标识表征所述申请类型为所述第二类型时,基于所述第一关系以及所述第二关系对所述总申请内存进行更新。
12.根据权利要求10所述的方法,其特征在于,对所述内存占用信息进行分析,得到分析结果,包括:
从所述内存占用信息中获取所述目标堆栈中所存储的目标地址;
基于所述目标地址以及存储所述待分析进程的代码的代码库的起始地址;
根据所述目标地址以及所述起始地址确定所述待分析进程的代码所占用的第一内存信息;
对所述第一内存信息以及所述内存占用信息进行分析,得到所述分析结果,并以图形化的形式展示所述分析结果。
13.一种服务器内存的分析装置,其特征在于,包括:
确定模块,用于响应服务器内存分析指令,确定待分析进程对应的目标共享内存,其中,所述待分析进程从服务器中运行的多个进程中选取得到,所述多个进程中的每个进程分别对应设置在所述服务器中的至少一个共享内存;
获取模块,用于获取预先存储在所述目标共享内存中的内存占用信息;
分析模块,用于对所述内存占用信息进行分析,得到分析结果,其中,所述分析结果表征所述待分析进程在所述服务器中的共享内存占用状态。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至12任一项中所述的服务器内存的分析方法。
15.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现用于运行程序,其中,所述程序被设置为运行时执行所述权利要求1至12任一项中所述的服务器内存的分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210089250.1A CN114510394A (zh) | 2022-01-25 | 2022-01-25 | 服务器内存的分析方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210089250.1A CN114510394A (zh) | 2022-01-25 | 2022-01-25 | 服务器内存的分析方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114510394A true CN114510394A (zh) | 2022-05-17 |
Family
ID=81550163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210089250.1A Pending CN114510394A (zh) | 2022-01-25 | 2022-01-25 | 服务器内存的分析方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114510394A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107517A (zh) * | 2023-04-11 | 2023-05-12 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN117009114A (zh) * | 2023-10-07 | 2023-11-07 | 联通(广东)产业互联网有限公司 | 一种数据共享方法、装置、电子设备及存储介质 |
-
2022
- 2022-01-25 CN CN202210089250.1A patent/CN114510394A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107517A (zh) * | 2023-04-11 | 2023-05-12 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN116107517B (zh) * | 2023-04-11 | 2023-06-09 | 远江盛邦(北京)网络安全科技股份有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN117009114A (zh) * | 2023-10-07 | 2023-11-07 | 联通(广东)产业互联网有限公司 | 一种数据共享方法、装置、电子设备及存储介质 |
CN117009114B (zh) * | 2023-10-07 | 2024-05-28 | 联通(广东)产业互联网有限公司 | 一种数据共享方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114510394A (zh) | 服务器内存的分析方法、装置及计算机可读存储介质 | |
CN106610892B (zh) | 内存泄漏检测方法和装置 | |
CN110413521B (zh) | 一种堆内存的写越界检测方法和装置 | |
CN100392606C (zh) | 一种定位虚拟操作系统内存泄漏的方法 | |
CN109803152A (zh) | 违规审核方法、装置、电子设备以及存储介质 | |
CN109445690B (zh) | 一种raid卡性能优化方法、装置、终端及存储介质 | |
CN113868126A (zh) | 应用调试方法、装置、设备的存储介质 | |
JP6715334B2 (ja) | Gpuリソース再構築方法、ユーザー・デバイス、システム及び記憶媒体 | |
CN112035314A (zh) | 内存泄漏的监控方法、装置及电子设备 | |
US20240264915A1 (en) | Data storage method and apparatus, and electronic device and readable storage medium | |
CN112559088A (zh) | 配置文件的优化方法、装置、服务器以及存储介质 | |
CN103034577A (zh) | 一种定位关机慢的方法及装置 | |
CN102037448B (zh) | 主机数据处理设备内的装置仿真支持 | |
CN103729166A (zh) | 程序的线程关系确定方法、设备及系统 | |
CN113076233B (zh) | 一种io性能检测方法、装置、设备及存储介质 | |
CN117591327A (zh) | core文件生成方法、装置、电子设备及存储介质 | |
CN117033099A (zh) | 一种系统硬盘的压力测试方法、系统、装置及存储介质 | |
CN108009039B (zh) | 终端信息的记录方法、装置、存储介质及电子设备 | |
CN112506592B (zh) | 页面加载时长的确定方法、装置、设备和存储介质 | |
CN115934999A (zh) | 一种基于块文件的视频流数据存储方法、装置及介质 | |
CN115237889A (zh) | 数据库切换方法及装置、存储介质、计算机设备 | |
CN113986599A (zh) | 一种应用处理方法、终端、服务器、设备及存储介质 | |
CN111831206B (zh) | 存储空间切换方法及后端监控系统 | |
CN115145679A (zh) | 一种资源获取方法、装置、设备和计算机可读存储介质 | |
US9495278B2 (en) | Dynamic discovery of data segments within instrumented code |
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 |