四、说明书
技术领域
[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的顾客的恳求不能全部交由同一个进程处理linux 查询程序端口,而是由各进程以不确定的方法得到。所以当服务器程序须要会话保持功能的时侯,只能用单进程模式运行,不能充分借助多核处理的处理能力;否则须要使用复杂的机制确保多进程服务器的会话保持功能。
[0009]还有一些网路服务器程序(如hapiOxy)才能在多进程模式下运行,但顾客端的恳求交由那个进程处理是不确定的,这就造成该网路服务器程序在多进程模式下不能做到会话保持,以至于在须要启用会话保持时linux常用命令,这种网路服务器程序只能运行在单进程模式下,不同充分发挥多核处理器的优势,增加了系统的处理能力。
发明内容
[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和目的端口linux定时器,这样就促使同一个源IP的恳求会交由同一个进程处理。
[0029]步骤20使每位网路服务器进程采用多进程形式运行,且每位网路服务器进程分别创建窃听socket;
[0030]步骤30对每位网路服务器进程设置窃听socket的RESUEPORT选项;
[0031]网路服务器的窃听网路恳求的socket调用setsockoptO函数,设置REUSEPORT选项linux 查询程序端口,该socket就启用了REUSEPORT功能。
[0032]步骤40采用多进程形式启动网路服务器进程。
[0033]一个进程创建若干子进程,每位子进程分别创建窃听服务的socket,但是根据上述步骤30设置该socket的REUSEPORT选项,之后根据常规步骤绑定窃听的IP和端口,调用accept等待顾客端联接。
[0034]构建联接时的处理情况,如图4所示,顾客端A的第一次恳求按照哈希算法交由进程PO处理,顾客端B的第一次恳求按照哈希算法交由进程P2处理,后续的恳求按照哈希算法交由相同的进程处理,保证了会话保持。
[0035]虽说本发明所揭发的施行方法如上,但所述的内容只是为了易于理解本发明而采用的施行方法,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭发的精神和范围的前提下,可以在施行的方式上及细节上作任何的更改与变化,但本发明的专利保护范围,仍须以所附的权力要求书所划分的范围为准。