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

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

Info

Publication number
CN104503853A
CN104503853A CN201410825974.3A CN201410825974A CN104503853A CN 104503853 A CN104503853 A CN 104503853A CN 201410825974 A CN201410825974 A CN 201410825974A CN 104503853 A CN104503853 A CN 104503853A
Authority
CN
China
Prior art keywords
network server
session
server program
linux system
program
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
Application number
CN201410825974.3A
Other languages
English (en)
Inventor
高明
张广龙
彭建章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Solid (Beijing) Network Technology Co., Ltd.
Original Assignee
BANGGOO TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BANGGOO TECHNOLOGY Co Ltd filed Critical BANGGOO TECHNOLOGY Co Ltd
Priority to CN201410825974.3A priority Critical patent/CN104503853A/zh
Publication of CN104503853A publication Critical patent/CN104503853A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

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

Description

一种Linux系统上的多进程服务器程序的会话保持方法
技术领域
本发明涉及计算机网络技术,尤其涉及Linux系统上的多进程服务器程序的会话保持方法。
背景技术
会话保持,在一次会话中(如一次网上购物),客户端需要多次访问服务器,服务器识别这些网络连接属于同一个会话。从开发者的角度看,同一个会话的连接是交由同一个服务器进程处理的;通常同一个会话的客户端IP相同,所以只要做到同一个客户端IP的连接交由同一个服务器进程处理,就能做到会话保持。
多核处理器在一颗处理器上有多个处理器核,每个处理器核上都能运行程序。在多核处理器上提高程序性能的一种方法是并行化,即让单进程程序能够多进程或多线程运行。
端口重用机制。socket设置REUSEPORT(端口重用)选项,使得多个进程可同时绑定同一个IP和端口,客户端请求根据(源IP,源端口,目的IP,目的端口等)哈希到达服务器进程,消除了accept(接收)惊群问题,提高了系统效率。图1所示REUSEPORT的实例图,4个进程绑定相同的IP和端口对客户端外提供服务。
典型的多进程网络服务器模型如下所述:
模型一。进程P创建服务器socket,然后创建若干子进程C0,C1…Cn,所有进程调用accept等待客户端请求的到来。客户端请求到达哪个进程是不确定的,这些进程需要竞争,会发生惊群现象,影响系统性能。本模型如图2所示。
模型二。进程P0,P1…Pn分别创建服务器socket,设置socket的REUSEPORT选项,所有进程调用accept等待客户端请求的到来。客户端请求会根据RESUEPORT机制中的算法交给一个进程,所以这些进程无需竞争请求。本模型如图1所示。
上述两种模型均不能保证会话保持,即同一个源IP的客户的请求不能全部交由同一个进程处理,而是由各进程以不确定的方式得到。所以当服务器程序需要会话保持功能的时候,只能用单进程模式运行,不能充分利用多核处理的处理能力;否则需要使用复杂的机制确保多进程服务器的会话保持功能。
还有一些网络服务器程序(如haproxy)能够在多进程模式下运行,但客户端的请求交由哪个进程处理是不确定的,这就导致该网络服务器程序在多进程模式下不能做到会话保持,以至于在需要启用会话保持时,这些网络服务器程序只能运行在单进程模式下,不同充分发挥多核处理器的优势,降低了系统的处理能力。
发明内容
为解决上述技术问题,本发明的目的是提供一种Linux系统上的多进程服务器程序会话保持方法。
本发明的目的通过以下的技术方案来实现:
一种Linux系统上的多进程服务器程序会话保持方法,该方法包括:
调整Linux内核的RESUEPORT哈希算法使同一客户端的请求由同一个服务进程处理;
使每个网络服务器进程采用多进程方式运行,且每个网络服务器进程分别创建监听socket;
对每个网络服务器进程设置监听socket的RESUEPORT选项;
采用多进程方式启动网络服务器进程。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
单进程网络服务器程序可以快速转化为支持会话保持的多进程网络服务器程序,从而在多核平台上提高网络服务器程序的处理能力;
不支持会话保持功能的多进程网络服务器程序可以快速转化为支持会话保持的多进程网络服务器程序,从而在多核平台上提高网络服务器程序的处理能力;
网络服务器程序支持多进程模式和会话保持功能,从而在多核平台上提高网络服务程序的处理能力。
附图说明
图1是现有技术提供的REUSEPORT实例、多进程网络服务器模型二结构示意图;
图2是现有技术提供的多进程网络服务器模型一的结构示意图;
图3是本发明提供的方法流程图;
图4是本发明建立连接时的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合实施例及附图对本发明作进一步详细的描述。
如图3所示,为Linux系统上的多进程服务器程序会话保持方法,该方法包括:
步骤10调整Linux内核的RESUEPORT哈希算法使同一客户端的请求由同一个服务进程处理;
将原来哈希算法的哈希修改为哈希源IP、目的IP和目的端口,这样就使得同一个源IP的请求会交由同一个进程处理。
步骤20使每个网络服务器进程采用多进程方式运行,且每个网络服务器进程分别创建监听socket;
步骤30对每个网络服务器进程设置监听socket的RESUEPORT选项;
网络服务器的监听网络请求的socket调用setsockopt()函数,设置REUSEPORT选项,该socket就启用了REUSEPORT功能。
步骤40采用多进程方式启动网络服务器进程。
一个进程创建若干子进程,每个子进程分别创建监听服务的socket,并且按照上述步骤30设置该socket的REUSEPORT选项,然后按照常规步骤绑定监听的IP和端口,调用accept等待客户端连接。
建立连接时的处理情况,如图4所示,客户端A的第一次请求根据哈希算法交由进程P0处理,客户端B的第一次请求根据哈希算法交由进程P2处理,后续的请求根据哈希算法交由相同的进程处理,保证了会话保持。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (3)

1.一种Linux系统上的多进程服务器程序的会话保持方法,其特征在于,所述方法包括:
调整Linux内核的RESUEPORT哈希算法使同一客户端的请求由同一个服务进程处理;
使每个网络服务器进程采用多进程方式运行,且每个网络服务器进程分别创建监听socket;
对每个网络服务器进程设置监听socket的RESUEPORT选项;
采用多进程方式启动网络服务器进程。
2.如权利要求1所述的Linux系统上的多进程服务器程序的会话保持方法,其特征在于,多进程网络服务器程序可会话保持。
3.如权利要求1所述的Linux系统上的多进程服务器程序的会话保持方法,其特征在于,所述客户端的请求按照源IP、目的IP、目的端口三元组哈希到一个服务器进程。
CN201410825974.3A 2014-12-25 2014-12-25 一种Linux系统上的多进程服务器程序的会话保持方法 Pending CN104503853A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410825974.3A CN104503853A (zh) 2014-12-25 2014-12-25 一种Linux系统上的多进程服务器程序的会话保持方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410825974.3A CN104503853A (zh) 2014-12-25 2014-12-25 一种Linux系统上的多进程服务器程序的会话保持方法

Publications (1)

Publication Number Publication Date
CN104503853A true CN104503853A (zh) 2015-04-08

Family

ID=52945253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410825974.3A Pending CN104503853A (zh) 2014-12-25 2014-12-25 一种Linux系统上的多进程服务器程序的会话保持方法

Country Status (1)

Country Link
CN (1) CN104503853A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105610906A (zh) * 2015-12-18 2016-05-25 北京奇虎科技有限公司 转发请求的方法、装置及系统
CN107977267A (zh) * 2016-10-25 2018-05-01 航天信息股份有限公司 用于改善单进程网络程序性能的方法及设备
CN108196956A (zh) * 2017-12-28 2018-06-22 郑州云海信息技术有限公司 一种nas服务节点实现nas服务的方法及系统
CN114979233A (zh) * 2022-07-19 2022-08-30 深圳市亿联无限科技有限公司 基于域套接字实现模块间同步和异步调用的方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179133A1 (en) * 2005-09-06 2011-07-21 Christian Fleischer Connection manager capable of supporting both distributed computing sessions and non distributed computing sessions
CN102916953A (zh) * 2012-10-12 2013-02-06 青岛海信传媒网络技术有限公司 基于tcp连接实现并发服务的方法及装置
CN103117895A (zh) * 2013-01-25 2013-05-22 哈尔滨工业大学 一种lxi仪器的服务监听方法
CN103746977A (zh) * 2013-12-27 2014-04-23 东软熙康健康科技有限公司 一种Linux服务器的连接方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179133A1 (en) * 2005-09-06 2011-07-21 Christian Fleischer Connection manager capable of supporting both distributed computing sessions and non distributed computing sessions
CN102916953A (zh) * 2012-10-12 2013-02-06 青岛海信传媒网络技术有限公司 基于tcp连接实现并发服务的方法及装置
CN103117895A (zh) * 2013-01-25 2013-05-22 哈尔滨工业大学 一种lxi仪器的服务监听方法
CN103746977A (zh) * 2013-12-27 2014-04-23 东软熙康健康科技有限公司 一种Linux服务器的连接方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105610906A (zh) * 2015-12-18 2016-05-25 北京奇虎科技有限公司 转发请求的方法、装置及系统
CN107977267A (zh) * 2016-10-25 2018-05-01 航天信息股份有限公司 用于改善单进程网络程序性能的方法及设备
CN108196956A (zh) * 2017-12-28 2018-06-22 郑州云海信息技术有限公司 一种nas服务节点实现nas服务的方法及系统
CN114979233A (zh) * 2022-07-19 2022-08-30 深圳市亿联无限科技有限公司 基于域套接字实现模块间同步和异步调用的方法和系统

Similar Documents

Publication Publication Date Title
CN104780080B (zh) 深度报文检测方法及系统
CN104503853A (zh) 一种Linux系统上的多进程服务器程序的会话保持方法
GB2575334A9 (en) Synchronization and exchange of data between processors
CN103441867B (zh) 一种更新虚拟机内部网络资源配置的方法
CN103064745B (zh) 一种任务分配处理的方法及系统
CN107391243A (zh) 线程任务处理设备、装置及方法
CN105099898B (zh) 一种pppoe报文转发方法以及bras服务器
JP2009266202A5 (ja) 情報処理装置、情報処理装置の制御方法、セッション管理システム並びにプログラム
US10120673B2 (en) Method and device for remotely updating application program
WO2015143794A1 (zh) 制作、升级方法及服务器、终端、升级系统和存储介质
CN104182261A (zh) 一种固件在线批量升级的方法
CN104811922A (zh) 一种相邻节点注册方法和装置、跨节点注册方法和系统
ATE476805T1 (de) Verfahren zur verwaltung von gruppenkommunikationen in einem kommunikationsnetz
CN103856559A (zh) 多版本并存的web服务工作方法和系统
CN106210058A (zh) 一种多核并行的反向代理方法
CN110636127B (zh) 一种各信息数据间的通信处理方法及系统
CN105357209A (zh) 一种web认证方法及装置
CN104965810A (zh) 多核模式下快速处理数据报文的方法及装置
CN110401658A (zh) 一种数据交互方法和交互平台
CN103297514A (zh) 基于云架构的虚拟机管理平台及管理方法
JP2016127393A (ja) 情報処理装置、方法およびプログラム
CN107145585A (zh) Hadoop数据仓库的自动导入数据方法及系统
CN111131367B (zh) 一种分布式接入服务处理方法及装置
CN103765819A (zh) 一种数据配置方法及网络管理服务器
CN104699799A (zh) 基于跨系统数据传输方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20170118

Address after: 100085 Beijing City, entrepreneurship in the middle of the road on the 1st floor, room 36, No. 105

Applicant after: Solid (Beijing) Network Technology Co., Ltd.

Address before: 100085 Beijing city Haidian District Anning Zhuang three Yami Science Park A-1010.

Applicant before: BANGGOO TECHNOLOGY CO., LTD.

RJ01 Rejection of invention patent application after publication

Application publication date: 20150408

RJ01 Rejection of invention patent application after publication