一种Linux系统上的多进程服务器程序的会话保持方法

文档序号:6640144阅读:318来源:国知局
一种Linux系统上的多进程服务器程序的会话保持方法
【专利摘要】本发明公开了一种Linux系统上的多进程服务器程序的会话保持方法,该方法包括:调整Linux内核的RESUEPORT哈希算法使同一客户端的请求由同一个服务进程处理;使每个网络服务器进程采用多进程方式运行,且每个网络服务器进程分别创建监听socket;对每个网络服务器进程设置监听socket的RESUEPORT选项;采用多进程方式启动网络服务器进程。本发明采用多进程方式运行该服务器程序,该程序能做到会话保持;单进程服务器程序或者不支持会话保持的多进程服务器程序都很方便的应用本发明。
【专利说明】一种Linux系统上的多进程服务器程序的会话保持方法

【技术领域】
[0001]本发明涉及计算机网络技术,尤其涉及Linux系统上的多进程服务器程序的会话保持方法。

【背景技术】
[0002]会话保持,在一次会话中(如一次网上购物),客户端需要多次访问服务器,服务器识别这些网络连接属于同一个会话。从开发者的角度看,同一个会话的连接是交由同一个服务器进程处理的;通常同一个会话的客户端IP相同,所以只要做到同一个客户端IP的连接交由同一个服务器进程处理,就能做到会话保持。
[0003]多核处理器在一颗处理器上有多个处理器核,每个处理器核上都能运行程序。在多核处理器上提高程序性能的一种方法是并行化,即让单进程程序能够多进程或多线程运行。
[0004]端口重用机制。socket设置REUSEPORT (端口重用)选项,使得多个进程可同时绑定同一个IP和端口,客户端请求根据(源IP,源端口,目的IP,目的端口等)哈希到达服务器进程,消除了 acc印t (接收)惊群问题,提高了系统效率。图I所示REUSEPORT的实例图,4个进程绑定相同的IP和端口对客户端外提供服务。
[0005]典型的多进程网络服务器模型如下所述:
[0006]模型一。进程P创建服务器socket,然后创建若干子进程CO,Cb-Cn,所有进程调用accept等待客户端请求的到来。客户端请求到达哪个进程是不确定的,这些进程需要竞争,会发生惊群现象,影响系统性能。本模型如图2所示。
[0007]模型二。进程PO,Pl…Pn分别创建服务器socket,设置socket的REUSEPORT选项,所有进程调用accept等待客户端请求的到来。客户端请求会根据RESUEPORT机制中的算法交给一个进程,所以这些进程无需竞争请求。本模型如图I所示。
[0008]上述两种模型均不能保证会话保持,即同一个源IP的客户的请求不能全部交由同一个进程处理,而是由各进程以不确定的方式得到。所以当服务器程序需要会话保持功能的时候,只能用单进程模式运行,不能充分利用多核处理的处理能力;否则需要使用复杂的机制确保多进程服务器的会话保持功能。
[0009]还有一些网络服务器程序(如hapiOxy)能够在多进程模式下运行,但客户端的请求交由哪个进程处理是不确定的,这就导致该网络服务器程序在多进程模式下不能做到会话保持,以至于在需要启用会话保持时,这些网络服务器程序只能运行在单进程模式下,不同充分发挥多核处理器的优势,降低了系统的处理能力。


【发明内容】

[0010]为解决上述技术问题,本发明的目的是提供一种Linux系统上的多进程服务器程序会话保持方法。
[0011]本发明的目的通过以下的技术方案来实现:
[0012]一种Linux系统上的多进程服务器程序会话保持方法,该方法包括:
[0013]调整Linux内核的RESUEPORT哈希算法使同一客户端的请求由同一个服务进程处理;
[0014]使每个网络服务器进程采用多进程方式运行,且每个网络服务器进程分别创建监听 socket ;
[0015]对每个网络服务器进程设置监听socket的RESUEPORT选项;
[0016]采用多进程方式启动网络服务器进程。
[0017]与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
[0018]单进程网络服务器程序可以快速转化为支持会话保持的多进程网络服务器程序,从而在多核平台上提高网络服务器程序的处理能力;
[0019]不支持会话保持功能的多进程网络服务器程序可以快速转化为支持会话保持的多进程网络服务器程序,从而在多核平台上提高网络服务器程序的处理能力;
[0020]网络服务器程序支持多进程模式和会话保持功能,从而在多核平台上提高网络服务程序的处理能力。

【专利附图】

【附图说明】
[0021]图1是现有技术提供的REUSEPORT实例、多进程网络服务器模型二结构示意图;
[0022]图2是现有技术提供的多进程网络服务器模型一的结构示意图;
[0023]图3是本发明提供的方法流程图;
[0024]图4是本发明建立连接时的结构示意图。

【具体实施方式】
[0025]为使本发明的目的、技术方案和优点更加清楚,下面将结合实施例及附图对本发明作进一步详细的描述。
[0026]如图3所示,为Linux系统上的多进程服务器程序会话保持方法,该方法包括:
[0027]步骤10调整Linux内核的RESUEPORT哈希算法使同一客户端的请求由同一个服务进程处理;
[0028]将原来哈希算法的哈希修改为哈希源IP、目的IP和目的端口,这样就使得同一个源IP的请求会交由同一个进程处理。
[0029]步骤20使每个网络服务器进程采用多进程方式运行,且每个网络服务器进程分别创建监听socket ;
[0030]步骤30对每个网络服务器进程设置监听socket的RESUEPORT选项;
[0031]网络服务器的监听网络请求的socket调用setsockoptO函数,设置REUSEPORT选项,该socket就启用了 REUSEPORT功能。
[0032]步骤40采用多进程方式启动网络服务器进程。
[0033]一个进程创建若干子进程,每个子进程分别创建监听服务的socket,并且按照上述步骤30设置该socket的REUSEPORT选项,然后按照常规步骤绑定监听的IP和端口,调用accept等待客户端连接。
[0034]建立连接时的处理情况,如图4所示,客户端A的第一次请求根据哈希算法交由进程PO处理,客户端B的第一次请求根据哈希算法交由进程P2处理,后续的请求根据哈希算法交由相同的进程处理,保证了会话保持。
[0035]虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属【技术领域】内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
【权利要求】
1.一种Linux系统上的多进程服务器程序的会话保持方法,其特征在于,所述方法包括: 调整Linux内核的RESUEPORT哈希算法使同一客户端的请求由同一个服务进程处理;使每个网络服务器进程采用多进程方式运行,且每个网络服务器进程分别创建监听socket ; 对每个网络服务器进程设置监听socket的RESUEPORT选项; 采用多进程方式启动网络服务器进程。
2.如权利要求1所述的Linux系统上的多进程服务器程序的会话保持方法,其特征在于,多进程网络服务器程序可会话保持。
3.如权利要求1所述的Linux系统上的多进程服务器程序的会话保持方法,其特征在于,所述客户端的请求按照源IP、目的IP、目的端口三元组哈希到一个服务器进程。
【文档编号】G06F9/54GK104503853SQ201410825974
【公开日】2015年4月8日 申请日期:2014年12月25日 优先权日:2014年12月25日
【发明者】高明, 张广龙, 彭建章 申请人:般固(北京)科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1