处理用户请求的方法和装置的制造方法

文档序号:10512000阅读:291来源:国知局
处理用户请求的方法和装置的制造方法
【专利摘要】本公开是关于一种处理用户请求的方法,应用于服务器,所述方法包括:在所述服务器的可用服务进程列表中,存在有占用所述服务器的内存超过预定的内存阈值的服务进程时,将所述服务进程从所述可用服务进程列表中删除;将所述服务进程结束;创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中;根据当前的可用服务进程列表,处理所述服务器接收的用户请求。这样,减少了垃圾收集的运行,减少了服务响应时间,从而提高了响应的即时性,保证了服务的高可用性,提升了用户体验。
【专利说明】
处理用户请求的方法和装置
技术领域
[0001]本发明涉及服务器进程运行领域,具体地,涉及一种处理用户请求的方法和装置。
【背景技术】
[0002]目前,越来越多的服务器中都采用了带垃圾收集器的语言(例如Go,Java)进行开发,以提高开发效率,降低维护成本。使用垃圾收集器,运行垃圾收集都需要停止程序响应(Stop the world),由于垃圾收集运行的时机存在不确定性,往往程序负荷较大的时候会频繁的触发,从而影响业务响应的实时性。对于很多服务器平台,都会影响响应的实时性,将会降低用户体验。例如,对于电商平台来说,会影响成单的数量。
[0003]上述问题可以通过使服务器尽量扩大物理内存、优化程序的内存使用、或者使程序尽量降低内存占用来解决,以减少GC(Gabage Collect1n)阻塞时间。但是,扩大物理内存会导致成本上升,如果考虑如何减少内存占用问题的话,开发周期变长,小内存开发会影响业务的扩展。

【发明内容】

[0004]本发明的目的是提供一种对用户请求能够快速响应的、处理用户请求的方法和装置。
[0005]根据本公开实施例的第一方面,提供一种处理用户请求的方法,应用于服务器。所述方法包括:在所述服务器的可用服务进程列表中,存在有占用所述服务器的内存超过预定的内存阈值的服务进程时,将所述服务进程从所述可用服务进程列表中删除;将所述服务进程结束;创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中;根据当前的可用服务进程列表,处理所述服务器接收的用户请求。
[0006]可选地,所述将所述服务进程结束的步骤包括:在删除所述服务进程预定时长之后,将所述服务进程结束。
[0007]可选地,所述根据当前的可用服务进程列表,处理所述服务器接收的用户请求的步骤包括:按照负载均衡策略,将所述服务器接收的用户请求分配到当前的可用服务进程列表中的一个或多个服务进程中进行处理。
[0008]可选地,所述方法还包括:停止垃圾收集机制的运行。
[0009]可选地,所述内存阈值小于垃圾收集阈值,所述垃圾收集阈值为能够触发垃圾收集机制运行的、服务进程所占用的最小内存值。
[0010]根据本公开实施例的第二方面,提供一种处理用户请求的装置,应用于服务器。所述装置包括:删除模块,用于在所述服务器的可用服务进程列表中,存在有占用所述服务器的内存超过预定的内存阈值的服务进程时,将所述服务进程从所述可用服务进程列表中删除;结束模块,用于将所述服务进程结束;创建添加模块,用于创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中;处理模块,用于根据当前的可用服务进程列表,处理所述服务器接收的用户请求。[0011 ]通过上述技术方案,将超过预定的内存阈值的服务进程结束,并创建新的服务进程,这样,减少了垃圾收集的运行,减少了服务响应时间,从而提高了响应的即时性,保证了服务的高可用性,提升了用户体验。
[0012]本发明的其他特征和优点将在随后的【具体实施方式】部分予以详细说明。
【附图说明】
[0013]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0014]图1是根据一示例性实施例示出的处理用户请求的方法的流程图;
[0015]图2是根据另一示例性实施例示出的处理用户请求的方法的流程图;
[0016]图3是根据又一示例性实施例示出的处理用户请求的方法的流程图;
[0017]图4是根据又一示例性实施例示出的处理用户请求的方法的流程图;
[0018]图5是根据一示例性实施例示出的处理用户请求的装置的框图;
[0019]图6是根据另一示例性实施例示出的处理用户请求的装置的框图;
[0020]图7是根据又一示例性实施例示出的处理用户请求的装置的框图;
[0021]图8是根据又一示例性实施例示出的处理用户请求的装置的框图;以及
[0022]图9是根据一示例性实施例示出的处理用户请求的装置的框图。
【具体实施方式】
[0023]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0024]图1是根据一示例性实施例示出的处理用户请求的方法的流程图,如图1所示,所述方法用于服务器中,包括以下步骤。
[0025]在步骤Sll中,在所述服务器的可用服务进程列表中,存在有占用所述服务器的内存超过预定的内存阈值的服务进程时,将所述服务进程从所述可用服务进程列表中删除。
[0026]在步骤S12中,将所述服务进程结束。
[0027]在步骤S13中,创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中。
[0028]在步骤S14中,根据当前的可用服务进程列表,处理所述服务器接收的用户请求。
[0029]通过上述技术方案,将超过预定的内存阈值的服务进程结束,并创建新的服务进程,这样,减少了垃圾收集的运行,减少了服务响应时间,从而提高了响应的即时性,保证了服务的高可用性,提升了用户体验。
[0030]具体地,服务器中通常设置有多个服务进程,这些服务进程可以同时对用户的多个请求进行处理。并且,在服务器中可以配置有可用服务进程列表。所述可用服务进程列表为当前可以接收任务的服务进程的列表。当服务器接收到用户请求时,从可用服务进程列表中选取一些服务进程,并指示其来处理。
[0031]根据本公开的实施例,在步骤Sll中,可以对每个服务进程所占用的内存进行实时监控,当监控到有服务进程占用的内存超过预定的内存阈值时,将所述服务进程从可用服务进程列表中删除。此时,如果接收到新的用户请求,则被删除出可用服务进程列表的服务进程,将不会接收到新的任务。
[0032]在步骤S12中,将所述服务进程结束。其中,结束为强制结束。结束进程即杀死(kill)进程。由于被删除出可用服务进程列表的服务进程将不会被指派给新的任务,因此,可以直接将其结束。之后可以创建新的服务进程,以保证服务的高可用性。
[0033]由于被删除的服务进程可能还需要一定的时间来处理之前的用户请求,因此,可以在所述服务进程处理完之前接收的用户请求之后,再将其结束。图2是根据另一示例性实施例示出的处理用户请求的方法的流程图。如图2所示,在图1的基础上,将所述服务进程结束的步骤(步骤S12)可以包括步骤S121。
[0034]在步骤S121中,在删除所述服务进程预定时长之后,将所述服务进程结束。
[0035]其中,所述预定时长可以设置为保证所述服务进程能够在预定时长内完成之前分配的用户请求。例如预定时长可以为一分钟。这样,在所述服务进程被结束之前,能够执行完被分配的全部任务,保证了服务器处理用户请求的完整性,避免出现一些用户请求得不到响应的情况。
[0036]返回图1,在步骤S13中,创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中。
[0037]虽然步骤S13和步骤S14以数字的顺序表示,但是,并不表示它们具有先后顺序,也可以同时进行。也就是,可以在结束所述服务进程后再创建新的服务进程,也可以在结束所述服务进程的同时创建新的服务进程。新的服务进程被创建以后就可以被添加到可用服务进程列表中,这样,新的服务进程就可以随时准备接收用户请求。对于可用服务进程列表的存储、维护、以及对用户请求的分配,例如可以通过反向代理服务器来运行。
[0038]在步骤S14中,根据当前的可用服务进程列表,处理服务器接收的用户请求。
[0039]如前所述,服务器可以将接收到的用户请求分配到当前可用服务进程列表中的一个或多个服务进程中,由服务进程来处理接收到的用户请求。根据本公开的实施例,可用服务进程列表是可以更新的,所述更新包括将占用内存超过预定的内存阈值的服务进程删除,以及添加新创建的服务进程。可以理解的是,只要没有停止程序响应,服务器随时可以接收用户请求,因此,该步骤S14可以是在以上步骤Sll?步骤S13中的任意位置。也就是,月艮务器在接收到用户请求时,可以根据当时的可用服务进程列表分配任务。
[0040]为了将用户请求尽量平均地分配到各个服务进程中,可以按照负载均衡策略进行分配。图3是根据又一示例性实施例示出的处理用户请求的方法的流程图。如图3所示,在图1的基础上,根据当前的可用服务进程列表,处理服务器接收的用户请求的步骤(步骤S14)可以包括步骤SI 41。
[0041]在步骤S141中,按照负载均衡策略,将服务器接收的用户请求分配到当前的可用服务进程列表中的一个或多个服务进程中进行处理。
[0042]所述负载均衡策略可以采用相关技术中常用的均衡策略。在该实施例中,根据负载均衡策略分配任务,避免了服务进程之间工作量差异过大的情况,并且减少了服务器执行上述结束和创建服务进程的动作,减少了服务器的工作量。
[0043]如前所述,在相关技术中,服务器通常运行垃圾收集来应对负荷较大的状况。在垃圾收集的运行当中,当服务进程占用的内存大于垃圾收集阈值时,会触发垃圾收集的运行。通过上述实施例,能够有效地应对服务器负荷较大的状况,因此,在本公开的一实施例中,可以停止垃圾收集机制的运行。
[0044]图4是根据又一示例性实施例示出的处理用户请求的方法的流程图。如图4所示,在图1的基础上,所述方法还可以包括步骤S15。
[0045]在步骤S15中,停止垃圾收集机制的运行。
[0046]可以理解的是,虽然图4中,步骤S15排在最后,但是,停止垃圾收集机制的运行可以不受上述步骤Sll?步骤S14的顺序的限制,S卩,可以与上述步骤具有任意的顺序关系。在该实施例中,停止垃圾收集机制,能够减小服务器的工作量,从而加快服务器的运行速度。
[0047]另外,服务器中的垃圾收集机制也可以不被停止,而将所述垃圾收集阈值设置得高于所述内存阈值,这样将停止绝大部分垃圾收集的运行。因此,在本公开的又一实施例中,服务器中可以设置内存阈值小于垃圾收集阈值,其中,所述垃圾收集阈值为能够触发垃圾收集机制运行的、服务进程所占用的最小内存值。这样,一方面,在通常状况下,步骤Sll?步骤S14能够处理大部分的服务器负荷较大的状况。另一方面,必要的时候,服务器还能够应用垃圾收集机制来应付负荷较大的状况。
[0048]通过上述技术方案,将超过预定的内存阈值的服务进程结束,并创建新的服务进程,这样,减少了垃圾收集的运行,减少了服务响应时间,从而提高了响应的即时性,保证了服务的高可用性,提升了用户体验。
[0049]本公开还提供一种处理用户请求的装置,应用于服务器。图5是根据一示例性实施例示出的处理用户请求的装置的框图。如图5所示,所述装置包括删除模块11、结束模块12、创建添加模块13和处理模块14。
[0050]所述删除模块11用于在所述服务器的可用服务进程列表中,存在有占用所述服务器的内存超过预定的内存阈值的服务进程时,将所述服务进程从所述可用服务进程列表中删除。
[0051 ]所述结束模块12用于将所述服务进程结束。
[0052]所述创建添加模块13用于创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中。
[0053]所述处理模块14用于根据当前的可用服务进程列表,处理所述服务器接收的用户请求。
[0054]图6是根据另一示例性实施例示出的处理用户请求的装置的框图。如图6所示,在图5的基础上,所述结束模块12包括结束子模块121。
[0055]所述结束子模块121用于在删除所述服务进程预定时长之后,将所述服务进程结束。
[0056]图7是根据又一示例性实施例示出的处理用户请求的装置的框图。如图7所示,在图5的基础上,所述处理模块14包括分配子模块141。
[0057]所述分配子模块141用于按照负载均衡策略,将所述服务器接收的用户请求分配到当前的可用服务进程列表中的一个或多个服务进程中进行处理。
[0058]图8是根据又一示例性实施例示出的处理用户请求的装置的框图。如图8所示,在图5的基础上,所述装置还包括停止模块15。
[0059]所述停止模块15用于停止垃圾收集机制的运行。
[0060]可选地,所述内存阈值小于垃圾收集阈值,所述垃圾收集阈值为能够触发垃圾收集机制运行的、服务进程所占用的最小内存值。
[0061]关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0062]通过上述技术方案,将超过预定的内存阈值的服务进程结束,并创建新的服务进程,这样,减少了垃圾收集的运行,减少了服务响应时间,从而提高了响应的即时性,保证了服务的高可用性,提升了用户体验。
[0063]图9是根据一示例性实施例示出的处理用户请求的装置900的框图。例如,装置900可以被提供为一服务器。参照图9,装置900包括处理组件922,其进一步包括一个或多个处理器,以及由存储器932所代表的存储器资源,用于存储可由处理组件922的执行的指令,例如应用程序。存储器932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件922被配置为执行指令,以执行上述处理用户请求的方法。
[0064]装置900还可以包括一个电源组件926被配置为执行装置900的电源管理,一个有线或无线网络接口 950被配置为将装置900连接到网络,和一个输入输出(I/O)接口 958。装置900可以操作基于存储在存储器932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM 或类似。
[0065]在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置900的处理器执行以完成上述处理用户请求的方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、⑶-ROM、磁带、软盘和光数据存储设备等。
[0066]本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0067]应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
【主权项】
1.一种处理用户请求的方法,应用于服务器,其特征在于,所述方法包括: 在所述服务器的可用服务进程列表中,存在有占用所述服务器的内存超过预定的内存阈值的服务进程时,将所述服务进程从所述可用服务进程列表中删除; 将所述服务进程结束; 创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中; 根据当前的可用服务进程列表,处理所述服务器接收的用户请求。2.根据权利要求1所述的方法,其特征在于,所述将所述服务进程结束的步骤包括: 在删除所述服务进程预定时长之后,将所述服务进程结束。3.根据权利要求1所述的方法,其特征在于,所述根据当前的可用服务进程列表,处理所述服务器接收的用户请求的步骤包括: 按照负载均衡策略,将所述服务器接收的用户请求分配到当前的可用服务进程列表中的一个或多个服务进程中进行处理。4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 停止垃圾收集机制的运行。5.根据权利要求1所述的方法,其特征在于,所述内存阈值小于垃圾收集阈值,所述垃圾收集阈值为能够触发垃圾收集机制运行的、服务进程所占用的最小内存值。6.一种处理用户请求的装置,应用于服务器,其特征在于,所述装置包括: 删除模块,用于在所述服务器的可用服务进程列表中,存在有占用所述服务器的内存超过预定的内存阈值的服务进程时,将所述服务进程从所述可用服务进程列表中删除; 结束模块,用于将所述服务进程结束; 创建添加模块,用于创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中; 处理模块,用于根据当前的可用服务进程列表,处理所述服务器接收的用户请求。7.根据权利要求6所述的装置,其特征在于,所述结束模块包括: 结束子模块,用于在删除所述服务进程预定时长之后,将所述服务进程结束。8.根据权利要求6所述的装置,其特征在于,所述处理模块包括: 分配子模块,用于按照负载均衡策略,将所述服务器接收的用户请求分配到当前的可用服务进程列表中的一个或多个服务进程中进行处理。9.根据权利要求6所述的装置,其特征在于,所述装置还包括: 停止模块,用于停止垃圾收集机制的运行。10.根据权利要求6所述的装置,其特征在于,所述内存阈值小于垃圾收集阈值,所述垃圾收集阈值为能够触发垃圾收集机制运行的、服务进程所占用的最小内存值。11.一种处理用户请求的装置,其特征在于,所述装置包括: 处理器; 用于存储处理器可执行指令的存储器; 其中,所述处理器被配置为: 在所述服务器的可用服务进程列表中,存在有占用所述服务器的内存超过预定的内存阈值的服务进程时,将所述服务进程从所述可用服务进程列表中删除; 将所述服务进程结束;创建新的服务进程,并将所述新的服务进程添加到所述可用服务进程列表中;根据当前的可用服务进程列表,处理所述服务器接收的用户请求。
【文档编号】G06F9/50GK105868012SQ201610195430
【公开日】2016年8月17日
【申请日】2016年3月30日
【发明人】马鑫, 李伟, 金帅
【申请人】北京小米移动软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1