一种使用内存池提升通信服务器性能的方法

文档序号:6515804阅读:121来源:国知局
一种使用内存池提升通信服务器性能的方法
【专利摘要】本发明公开了一种使用内存池提升通信服务器性能的方法,包括以下步骤:在指定配置文件中获取通信服务器并发处理数量(以下简称:并发数);根据并发数一次性申请通信服务器处理交互报文内存块,通过内存池管理方法实现对通信服务器业务请求所要申请和销毁内存,从而缩短通信服务器响应时间来提升服务器性能。所述的配置文件是建立在通信服务器并发处理能力的配置文件。本发明根据配置文件获取并发数,实现了内存池的管理机制,提高了通信服务器响应速度,增强了服务器的稳定性,提升用户的业务体验或对业务服务产品的忠诚度。
【专利说明】一种使用内存池提升通信服务器性能的方法
【技术领域】
[0001]本发明涉及计算机通信网络技术和服务器【技术领域】,尤其涉及一种使用内存池提升通信服务器性能的方法。
【背景技术】
[0002]通信服务器,是指在计算机通信网络中的一个管理资源对外提供业务服务的高性能计算机。它们侦听计算机通信网络中来自客户端的业务请求,并对业务请求进行响应和处理,而为不同业务服务,丰富了网络应用。在操作系统下动态内存管理很耗时,对效率影响特别大,然而在实际的应用过程中,却不可避免地经常要用到堆中的内存。但通过malloc函数或new函数等进行的内存分配存在先天缺陷:(I)利用默认的内存管理函数在堆上分配和释放内存需要花费很多时间;(2)随着时间的推移,堆上会形成许多内存碎片,在应用程序进行内存申请操作将受到更大的影响,导致应用程序的运行越来越慢。
[0003]当应用程序需要对固定大小的对象经常性地申请内存时,常会采用内存池(Memory Pool)技术来提高内存管理效率。经典的内存池做法是一次性分配大量大小相同的小块内存,通过该技术可以极大地加快内存分配/释放过程。内存池技术通过批量申请内存,降低了内存申请次数,从而使操作节省了时间。在减少了内存碎片产生的同时,对性能的提升有显著的帮助。

【发明内容】

[0004]本发明的主要目的在于提供一种使用内存池提升通信服务器性能的方法,从而改善通信服务器性能,提升用户的业务体验或对业务服务产品的忠诚度。
[0005]为实现上述目的,本发明提出一种使用内存池提升通信服务器性能的方法,通信服务器预先创建有限数量的空闲的待用内存块;在通信服务器运行过程中,将根据接收到的业务请求,通过内存池管理方法,并分配空闲的待用内存块给此业务请求使用并置状态为正在使用;在此业务请求处理执行完成之后,重新置状态为空闲,供通信服务器后续使用;所述内存池管理方法包括以下步骤:
A、通信服务器从配置文件获取并发数并初始化线程池;
B、判断当前时刻是否有业务请求;如果是,则执行步骤C;如果不是则执行步骤F ;
C、判断当前时刻内存池中是否存在尚处于空闲状态的内存块;如果是,则执行步骤D;如果不是则执行步骤E ;
D、内存池管理方法分配一个空闲内存块给业务请求线程使用;待业务请求处理完成之后;内存池管理方法回收供此业务请求使用的内存块;然后执行步骤F ;
E、记载内存池管理方法分配不到内存块的;并发送业务请求处理错误;
F、经延时At后,返回步骤B。
[0006]G、通信服务器退出,内存池管理方法释放内存。
[0007]通过内存池管理方法可以提高通信服务器性能,从而提高客户端业务访问速度。[0008]步骤D所述内存池管理方法分配包括以下步骤:
O、遍历内存池;如果存在空闲内存块,则执行步骤2);如果不存在空闲内存块,则执行步骤3);
2)、将遍历内存池中空闲内存块的状态置为使用;空闲计数器做减一操作;使用计数器做加一操作;并返回此内存块的首地址。
[0009]3)、返回空指针;
步骤D所述内存池管理方法回收包括以下步骤:
1)将使用内存块的状态置空闲;
2)空闲计数器做加一操作;使用计数器做减一操作。
[0010]本发明的进一步改进是:步骤D使用内存池管理方法去分配和收回内存块,所述内存池管理方法分配包括如下步骤:
O、遍历内存池;如果存在空闲内存块,则执行步骤
2)、如果不存在空闲内存块,则执行步骤3);
3)、将遍历内存池中空闲内存块的状态置为使用;空闲计数器做减一操作;使用计数器做加一操作;并返回此内存块的首地址。
[0011]所述通信服务器预先创建有限数量的空闲的待用内存空间具体为,在通信服务器启动运行时,根据配置文件获取并发数,创建并发数个固定大小的空闲的待用内存块。
[0012]通过配置文件获取并发数,通过并发数来指定内存池的大小。
[0013]所述步骤F中延时At的取值范围为10—100ms。
[0014]本发明的有益效果是:本发明通过在指定配置文件中获取服务器并发数;根据并发数一次性申请服务器处理交互报文内存空间,通过内存池管理方法实现对通信服务器业务请求所要申请和销毁内存,从而缩短通信服务器响应时间来提升服务器性能,在以下两个方面体现了,提高了通信服务器响应速度,增强了服务器的稳定性,提升用户的业务体验或对业务服务产品的忠诚度:1)缩短了内存分配时间。由于内存池是使用前一次性申请了内存块,在通信服务器处理业务请求时,并不需要申请内存,从而省掉了内存申请时间。2)减少了内存碎片。由于内存池是使用前一次性申请了内存块,在通信服务器处理多次业务请求时,避免了重复申请和销毁内存的可能性,从而提高了内存的利用率。
[0015]本发明的特征及优点将通过实施例结合附图进行详细说明。
【专利附图】

【附图说明】
[0016]图1表示本发明的通信服务器内存池管理方法结构示意图。
[0017]图2表示本发明的通信服务器内存池管理方法流程图。
【具体实施方式】
[0018]本发明通过在指定配置文件中获取服务器并发数;根据并发数一次性申请服务器处理交互报文内存空间,通过内存池管理方法实现对通信服务器业务请求所要申请和销毁内存,从而缩短通信服务器响应时间来提升服务器性能。
[0019]下面通过实施例对本发明的效果做进一步说明。
[0020]如图1所示,为本发明的一个实施例: 步骤I是在配置文件中获取并发数的信息,即通信服务器运行前的初始化。
[0021]步骤2是根据并发数和交互保文大小统一申请内存空间,即内存池的初始化。
[0022]步骤3是通过内存池管理机制分配和回收所需内存,即内存池的管理。
[0023]步骤4是通过内存池管理机制销毁内存,即内存池的销毁。
[0024]如图2所示,为本发明的内存池管理方法流程图,包括以下步骤:
A、通信服务器从配置文件获取并发数并初始化线程池;
B、判断当前时刻是否有业务请求;如果是,则执行步骤C;如果不是则执行步骤F ;
C、判断当前时刻内存池中是否存在尚处于空闲状态的内存块;如果是,则执行步骤D;如果不是则执行步骤E ;
D、内存池管理方法分配一个空闲内存块给业务请求线程使用;待业务请求处理完成之后;内存池管理方法回收供此业务请求使用的内存块;然后执行步骤F ;
E、记载内存池管理方法分配不到内存块的;并发送业务请求处理错误;
F、经延时At后,返回步骤B。
[0025]G、通信服务器退出,内存池管理方法释放内存。
[0026]通过内存池管理方法可以提高通信服务器性能,从而提高客户端业务访问速度。
[0027]步骤D所述内存池管理方法分配包括以下步骤:
O、遍历内存池;如果存在空闲内存块,则执行步骤2);如果不存在空闲内存块,则执行步骤3);
2)、将遍历内存池中空闲内存块的状态置为使用;空闲计数器做减一操作;使用计数器做加一操作;并返回此内存块的首地址。
[0028]3)、返回空指针;
步骤D所述内存池管理方法回收包括以下步骤:
1)将使用内存块的状态置空闲;
2)空闲计数器做加一操作;使用计数器做减一操作。
[0029]本发明使通信服务器响应速率更快,增强了服务器的稳定性和高效性。
[0030]虽然结合附图描述了本发明的实施方式,但是本领域的技术人员可以在所附权利要求的范围之内作出各种变形或修改,只要不超过本发明的权利要求所描述的保护范围,都应当在本发明的保护范围之内。
【权利要求】
1.一种使用内存池提升通信服务器性能的方法,其特征在于:通信服务器预先创建有限数量的空闲的待用内存块;在通信服务器运行过程中,将根据接收到的业务请求,通过内存池管理方法,并分配空闲的待用内存块给此业务请求使用并置状态为正在使用;在此业务请求处理执行完成之后,重新置状态为空闲,供通信服务器后续使用;所述内存池管理方法具体包括步骤如下: A、通信服务器从配置文件获取并发数并初始化线程池; B、判断当前时刻是否有业务请求;如果是,则执行步骤C;如果不是则执行步骤F ; C、判断当前时刻内存池中是否存在尚处于空闲状态的内存块;如果是,则执行步骤D;如果不是则执行步骤E ; D、内存池管理方法分配一个空闲内存块给业务请求线程使用;待业务请求处理完成之后;内存池管理方法回收供此业务请求使用的内存块;然后执行步骤F ; E、记载内存池管理方法分配不到内存块的;并发送业务请求处理错误; F、经延时At后,返回步骤B; G、通信服务器退出,内存池管理方法释放内存。
2.如权利要求1所述的一种使用内存池提升通信服务器性能的方法,其特征在于:步骤C所述的内存池管理方法分配包括以下步骤: 1)遍历内存池;如果存在空闲内存块,则执行步骤2);如果不存在空闲内存块,则执行步骤3); 2)将遍历内存池中空闲内存块的状态置为使用;空闲计数器做减一操作;使用计数器做加一操作,并返回此内存块的首地址; 3)返回空指针。
3.如权利要求1所述的一种使用内存池提升通信服务器性能的方法,其特征在于:步骤C所述的内存池管理方法回收包括以下步骤: 1)将使用内存块的状态置空闲; 2)空闲计数器做加一操作;使用计数器做减一操作。
4.如权利要求1所述的一种使用内存池提升通信服务器性能的方法,其特征在于:所述通信服务器预先创建有限数量的空闲的待用内存空间具体为,在通信服务器启动运行时,根据配置文件获取并发数,创建并发数个固定大小的空闲的待用内存块。
5.如权利要求1或4所述的一种使用内存池提升通信服务器性能的方法,其特征在于:通过配置文件获取并发数,通过并发数来指定内存池的大小。
6.如权利要求1中所述的一种使用内存池提升通信服务器性能的方法,其特征在于,所述步骤F中延时At的取值范围为10 — 100ms。
【文档编号】G06F12/06GK103530239SQ201310490032
【公开日】2014年1月22日 申请日期:2013年10月18日 优先权日:2013年10月18日
【发明者】张方玉 申请人:深圳市新格林耐特通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1