CN102541659B - 一种服务器业务请求处理方法和装置 - Google Patents

一种服务器业务请求处理方法和装置 Download PDF

Info

Publication number
CN102541659B
CN102541659B CN 201110454614 CN201110454614A CN102541659B CN 102541659 B CN102541659 B CN 102541659B CN 201110454614 CN201110454614 CN 201110454614 CN 201110454614 A CN201110454614 A CN 201110454614A CN 102541659 B CN102541659 B CN 102541659B
Authority
CN
China
Prior art keywords
server
thread
service request
stand
service
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.)
Active
Application number
CN 201110454614
Other languages
English (en)
Other versions
CN102541659A (zh
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.)
Chongqing super Body Technology Co., Ltd.
Original Assignee
CHONGQING XINMEI AGRICULTURAL INFORMATION 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 CHONGQING XINMEI AGRICULTURAL INFORMATION TECHNOLOGY CO LTD filed Critical CHONGQING XINMEI AGRICULTURAL INFORMATION TECHNOLOGY CO LTD
Priority to CN 201110454614 priority Critical patent/CN102541659B/zh
Publication of CN102541659A publication Critical patent/CN102541659A/zh
Application granted granted Critical
Publication of CN102541659B publication Critical patent/CN102541659B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种服务器业务请求处理方法和装置,其中,该方法通过服务器预先创建有限数量的空闲的待用线程;在服务器运行过程中,将接收到的业务请求排队形成请求队列,并分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理;被分配调用的待用线程在业务请求处理执行完成后,重新释放为空闲状态,供服务器后续调用。本发明方法和装置保证了服务器在运行过程中能够保持较高的业务请求处理执行效率,增强了服务器的业务请求处理性能,让服务器的业务请求处理性能得到更为优化和充分的利用,并且本发明方法可以广泛应用于任何业务的服务器当中,让服务器提供更加快速、高效的业务服务,提升用户的业务体验以及对业务服务产品的忠诚度。

Description

一种服务器业务请求处理方法和装置
技术领域
本发明涉及计算机通信网络技术和服务器技术领域,具体涉及一种服务器业务请求处理方法和装置。
背景技术
服务器,是指在计算机通信网络中的一个管理资源对外提供业务服务的高性能计算机。服务器类型有很多,例如数据服务器、文件服务器、网页服务器、流媒体服务器、搜索服务器等,它们侦听计算机通信网络中来自计算机客户端或移动通信客户端的业务请求,并对业务请求进行响应和处理,进而为计算机客户端或移动通信客户端提供各种不同的业务服务,丰富了网络应用。计算机通信网络中的服务器随时都面临着数量庞大的业务请求需要执行处理,服务器对业务请求的处理能力自然也成为其业务服务质量的一项重要衡量标准,快速、高效的业务服务更能够提升用户的业务体验以及对业务服务产品的忠诚度。
为了提升服务器业务服务质量,目前服务器都普遍采用了多线程并发执行业务请求处理的方式,以增强服务器的业务请求处理能力。现有服务器通常所采用的多线程并发业务请求处理方式,是每当一个请求到达的时候,服务器都新建一个线程对新到达的业务请求进行处理,直至处理完毕以后再销毁相应的线程;这一方式虽然能够完成对众多业务请求的多线程并发处理,但若在较短时间内有数量过于庞大的业务请求到达服务器时,过多的业务请求处理线程很可能“垄断”占用服务器的系统资源,使得服务器运行效率骤然降低,反而出现业务请求处理的延时较长甚至无响应的情况;不仅如此,由于并发执行大量的业务请求处理时,服务器也同时需要大量地、不间断地创建和销毁线程,这无疑进一步增加了服务器执行业务请求处理的耗时,并且大量地创建、销毁线程自身也进一步的消耗了服务器系统资源,更容易导致服务器无响应、业务服务中断的严重后果。
发明内容
针对现有技术中存在的上述不足,本发明的目的在于提供一种服务器业务请求处理方法和装置,使得服务器能够保持较高的业务请求处理执行效率,进一步增强服务器的业务请求处理性能。
为实现上述目的,本发明采用了如下技术手段:
一种服务器业务请求处理方法,服务器预先创建有限数量的空闲的待用线程;在服务器运行过程中,将接收到的业务请求排队形成请求队列,并分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理;被分配调用的待用线程在业务请求处理执行完成后,重新释放为空闲状态,供服务器后续调用。
上述的服务器业务请求处理方法中,作为一种可选择方案,所述“服务器预先创建有限数量的空闲的待用线程”具体为,在服务器启动运行时,创建Nmax个空闲的待用线程,Nmax为预设最大线程数;
在服务器运行过程中,所述“分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理”的具体分配调用步骤如下:
1)判断当前时刻请求队列中是否存在尚未处理的业务请求;若是,执行步骤2);否则执行步骤4);
2)判断当前时刻是否存在空闲的待用线程;若是,执行步骤3);否则执行步骤4);
3)分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回步骤1);
4)经延时Δt后,返回步骤1)。
上述的服务器业务请求处理方法中,作为另一种可选择方案,所述“服务器预先创建有限数量的空闲的待用线程”具体为,在服务器启动运行时,创建N个空闲的待用线程,且N<Nmax,Nmax为预设最大线程数;
在服务器运行过程中,所述“分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理”的具体分配调用步骤如下:
a)判断当前时刻请求队列中是否存在尚未处理的业务请求;若是,执行步骤b);否则执行步骤e);
b)判断当前时刻是否存在空闲的待用线程;若是,执行步骤c);否则执行步骤d);
c)分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回步骤a);
d)判断当前时刻待用线程的总数是否已达到预设最大线程数Nmax;若是,则执行步骤e);否则,再创建一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回步骤a);
e)经延时Δt后,返回步骤a)。
上述的服务器业务请求处理方法中,进一步,所述N的取值范围为1/2~2/3倍预设最大线程数Nmax。
上述的服务器业务请求处理方法中,进一步,所述预设最大线程数Nmax的取值范围为(1±10%)Nthr,Nthr为服务器目标线程数,且有:
Nthr=(1+Tw/Tc)Ncpu;
其中,Ncpu表示服务器的CPU数量;Tc表示业务请求处理过程中执行业务请求解析运算处理的平均持续时间;Tw表示业务请求处理过程中执行服务器数据读写操作的平均持续时间。
上述的服务器业务请求处理方法中,进一步,所述延时Δt的取值范围为50~500ms。
一种服务器业务请求处理装置,包括:
创建模块,用于预先创建有限数量的空闲的待用线程;
排队模块,用于在服务器运行过程中,将接收到的业务请求排队形成请求队列;
调度模块,用于分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理;
状态管理模块,用于将被分配调用的待用线程在业务请求处理执行完成后重新释放为空闲状态,供服务器后续调用。
上述的服务器业务请求处理装置中,进一步,所述创建模块包括第一创建单元,用于在服务器启动运行时,创建Nmax个空闲的待用线程,Nmax为预设最大线程数;
则所述调度模块包括第一调度单元,用于判断当前时刻请求队列中是否存在尚未处理的业务请求;若否,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若是,则判断当前时刻是否存在空闲的待用线程;若否,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若是,则分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回执行所述判断请求队列中是否存在尚未处理的业务请求。
上述的服务器业务请求处理装置中,进一步,所述创建模块包括第二创建单元,用于在服务器启动运行时创建N个空闲的待用线程,且N<Nmax,Nmax为预设最大线程数;
则所述调度模块包括第二调度单元,用于判断当前时刻请求队列中是否存在尚未处理的业务请求;若否,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若是,则判断当前时刻是否存在空闲的待用线程;若是,则分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回执行所述判断请求队列中是否存在尚未处理的业务请求,若否,则判断当前时刻待用线程的总数是否已达到预设最大线程数Nmax;若是,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若否,则再创建一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回执行所述判断请求队列中是否存在尚未处理的业务请求。
上述的服务器业务请求处理装置中,进一步,所述预设最大线程数Nmax的取值范围为(1±10%)Nthr,Nthr为服务器目标线程数,且有:
Nthr=(1+Tw/Tc)Ncpu;
其中,Ncpu表示服务器的CPU数量;Tc表示业务请求处理过程中执行业务请求解析运算处理的平均持续时间;Tw表示业务请求处理过程中执行服务器数据读写操作的平均持续时间。
相比于现有技术,本发明具有如下有益效果:
1、本发明的服务器业务请求处理方法和装置通过分配调用有限数量的待用线程对业务请求进行处理,不仅有效控制了并发执行业务请求处理的线程数量,保证了服务器在运行过程中始终能够保持较高的业务请求处理执行效率,还避免了创建、销毁线程对业务请求处理执行时间和系统资源的消耗,在缩短业务请求处理执行时间的同时也能后利用更多的系统资源提高业务请求处理的执行效率,从而进一步增强了服务器的业务请求处理性能。
2、作为本发明方法和装置的改进方案,可以通过调整待用线程的创建时机以及待用线程的分配调用处理过程,优化服务器启动运行和运行过程中的系统资源分配,并使得服务器能够根据需要自行逐步提升业务请求处理性能。
3、在本发明的服务器业务请求处理方法和装置的应用过程中,还可以根据具体应用场合的服务器硬件条件以及服务器提供的业务服务情况,合理设置预设最大线程数Nmax的值,让服务器的业务请求处理性能得到更为优化和充分的利用。
4、本发明的服务器业务请求处理方法和装置可以广泛应用于任何业务的服务器当中,让服务器提供更加快速、高效的业务服务,提升用户的业务体验以及对业务服务产品的忠诚度。
附图说明
图1为本发明实施例一的服务器业务请求处理方法中执行待用线程分配调用的流程框图;
图2为本发明实施例二的服务器业务请求处理方法中执行待用线程分配调用的流程框图;
图3为本发明实施例三的服务器业务请求处理装置的结构示意图。
具体实施方式
针对现有的服务器多线程并发业务请求处理方式难以保证业务请求处理执行效率,容易出现业务请求处理的延时较长、服务器无响应、甚至业务服务中断等多方面的缺陷,本发明方法提出一种服务器业务请求处理方法。与现有的多线程并发业务请求处理方式不同,本发明方法通过服务器预先创建有限数量的空闲的待用线程;在服务器运行过程中,将接收到的业务请求排队形成请求队列,并分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理;被分配调用的待用线程在业务请求处理执行完成后,重新释放为空闲状态,供服务器后续调用。由于服务器通过分配调用有限数量的待用线程对业务请求进行处理,不仅有效控制了并发执行业务请求处理的线程数量,避免了过多的业务请求处理线程“垄断”占用服务器的系统资源而导致业务请求处理执行效率骤然降低、处理延时较长的情况,同时还使得服务器不需要再不间断地反复创建、销毁线程,大幅减少了反复创建、销毁线程所消耗的时间和系统资源,从而让服务器在运行过程中能够保持较高的业务请求处理执行效率,进一步增强了服务器的业务请求处理性能。
下面通过实施例对本发明的效果做进一步说明。
实施例一:
本实施例以一对外提供数据搜索业务的搜索服务器为例,利用本发明的服务器业务请求处理方法执行其数据搜索业务请求处理,借以说明本发明方法的具体应用以及有益效果。搜索服务器接收到数据搜索业务请求后,需要对数据搜索业务请求进行解析获得搜索关键字,并对搜索关键字进行逻辑运算处理获得相应的索引条件,而后对搜索服务器中存储的大量数据索引进行读写匹配操作,从中搜索到满足索引条件的数据返回给请求方,搜索业务请求处理才得以完成。可见搜索服务器执行数据搜索业务请求处理的具体处理任务流程较为复杂,比较消耗时间和系统资源,如何保证业务请求处理执行效率则显得尤为重要。
为此,利用本发明的服务器业务请求处理方法来执行搜索服务器的数据搜索业务请求处理,即,让搜索服务器预先创建有限数量的空闲的待用线程;在搜索服务器运行过程中,将接收到的数据搜索业务请求排队形成请求队列,同时,分配调用空闲的待用线程对请求队列中尚未处理的数据搜索业务请求进行处理;被分配调用的待用线程在数据搜索业务请求处理执行完成后,重新释放为空闲状态,供搜索服务器后续调用。为了简化设计和系统运行流程,在本实施例中,对于待用线程采用了一次性创建、而后调用的实施方式;其具体为,在搜索服务器启动运行时,创建Nmax个空闲的待用线程,Nmax为预设最大线程数;在搜索服务器运行过程中,分配调用空闲的待用线程对请求队列中尚未处理的数据搜索业务请求进行处理的分配调用流程则如图1所示,其具体分配调用步骤如下:
S11,判断当前时刻请求队列中是否存在尚未处理的业务请求;若是,执行步骤S12;否则执行步骤S14;
S12,判断当前时刻是否存在空闲的待用线程;若是,执行步骤S13;否则执行步骤S14;
S13,分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回步骤S11;
S14,经延时Δt后,返回步骤S11。
由上述的分配调用流程可见,在本实施例的搜索服务器中,如果请求队列中存在尚未处理的数据搜索业务请求且存在空闲的待用线程的情况下,服务器将逐次分配调用空闲的待用线程按照请求队列的排队顺序对尚未处理的数据搜索业务请求进行处理,保证数据搜索业务请求处理的及时执行;而当创建的Nmax个待用线程都已被分配调用,而又存在尚未处理的数据搜索业务请求时,则只能循环的延时Δt,等待有被分配调用的待用线程在数据搜索业务请求处理执行完成而重新释放为空闲状态后,再继续分配调用空闲的待用线程执行数据搜索业务请求处理,由此控制并发执行业务请求处理的线程数量,避免了同时运行过多的数据搜索业务请求处理线程而造成“垄断”占用服务器系统资源、数据搜索业务请求处理执行效率骤然降低的情况,保证搜索服务器在运行过程中始终能够保持较高的数据搜索业务请求处理执行效率;同时,由于搜索服务器启动运行时已创建待用线程,在搜索服务器的运行过程中只需要执行待用线程的分配调用,而无需再创建和销毁线程,完全避免了创建、销毁线程对数据搜索业务请求处理执行时间和系统资源的消耗,业务请求处理执行时间得以缩短,并且业务请求处理执行效率也得以提高,从而进一步增强了搜索服务器的数据搜索业务请求处理性能。在上述分配调用流程的步骤4)中延迟Δt,是为了避免服务器在不存在尚未处理的数据搜索业务请求或者不存在空闲的待用线程时过于频繁的执行检测判断操作,当然延迟Δt的值也不应当过大,否则会影响待用线程的分配调用效率;从这些因素考虑,延时Δt的取值范围在50~500ms之间较为适宜。
在本发明的服务器业务请求处理方法中,如果要使得服务器的业务请求处理性能得到更为优化和充分的利用,则可以根据具体服务器硬件条件以及服务器提供的业务服务情况来设置预设最大线程数Nmax。作为服务器的硬件条件,服务器的CPU数量越多,则表明服务器的业务请求处理性能基础越优秀,服务器可同时运行的线程数也越多;服务器CPU的运算处理能力越强,其在业务请求处理过程中执行业务请求解析运算处理的平均持续时间就越短,越有助于提高业务请求处理速率。而服务器所提供业务服务的数据需求量大小对业务请求处理执行时间也存在较大影响,业务服务的数据需求量越大,自然在业务请求处理过程中执行服务器数据读写操作的平均持续时间就越长,因此业务请求处理执行时间也越长。而在不同的实际应用场合中,服务器硬件条件以及服务器提供的业务服务情况可能各有不同,因此在应用本发明的服务器业务请求处理方法时,技术人员可以根据服务器硬件条件及其所提供业务服务的具体情况,凭借经验来设置预设最大线程数Nmax的较适宜取值。
但是,若预设最大线程数Nmax的取值过大,将可能导致并发执行业务请求处理的待用线程数量过多,影响业务请求处理执行效率;而若预设最大线程数Nmax的取值过小,则服务器应有的业务请求处理性能又不能够得以充分的利用。为此,基于对服务器硬件条件及其所提供业务服务情况的综合考虑,可以按下式计算获得服务器目标线程数Nthr:
Nthr=(1+Tw/Tc)Ncpu;
其中,Ncpu表示服务器的CPU数量;Tc表示业务请求处理过程中执行业务请求解析运算处理的平均持续时间;Tw表示业务请求处理过程中执行服务器数据读写操作的平均持续时间。服务器的CPU数量Ncpu体现了服务器的硬件基础性能;业务请求处理过程中执行业务请求解析运算处理的平均持续时间Tc体现了服务器CPU的运算处理能力;业务请求处理过程中执行服务器数据读写操作的平均持续时间Tw体现了业务服务自身的数据需求量;这些数据可以通过对服务器过往业务请求处理过程加以统计而获得。综合考量服务器硬件因素以及服务业务自身因素获得服务器目标线程数Nthr后,服务器的预设最大线程数Nmax则可以根据实际情况在(1±10%)Nthr的范围内取值,保证预设最大线程数Nmax的取值趋于合理化,使得服务器的业务请求处理性能得到更为优化和充分的利用。例如,对于本实施例的搜索服务器而言,服务器的CPU数量Ncpu=4,而由于数据搜索过程中需要进行读写匹配操作的数据量较大,在数据搜索业务请求处理过程中,通常执行服务器数据读写操作的平均持续时间与执行业务请求解析运算处理的平均持续时间之比为9:1左右,因此,针对本实施例搜索服务器的情况,预设最大线程数Nmax在40~48之间取值较为适宜。
实施例二:
由于服务器在启动运行时,通常需要对较多的系统数据执行初始化处理,其初始化自身就需要消耗较多的系统资源;如果采用实施例一所述的服务器业务请求处理实施方式,在服务器启动运行时就创建非常多的待用线程,则会进一步消耗系统资源,导致服务器初始化处理执行缓慢而长时间不能启动至正常运行状态,影响服务器的启动操作。为了降低这种不利影响,本实施例提供了一种更为优化的服务器业务请求处理方法,在服务器启动运行时,先创建一部分的待用线程,例如创建N个空闲的待用线程,N<Nmax,Nmax为预设最大线程数;在服务器运行过程中,分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理时,则按下述的分配调用步骤执行,其流程如图2所示:
S21,判断当前时刻请求队列中是否存在尚未处理的业务请求;若是,执行步骤S22;否则执行步骤S25;
S22,判断当前时刻是否存在空闲的待用线程;若是,执行步骤S23;否则执行步骤S24;
S23,分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回步骤S21;
S24,判断当前时刻待用线程的总数是否已达到预设最大线程数Nmax;若是,则执行步骤S25;否则,S26:再创建一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回步骤S21;
S25,经延时Δt后,返回步骤S21。
参见上述的待用线程分配调用流程,在请求队列中存在尚未处理的业务请求且存在空闲的待用线程的情况下,待用线程的分配调用方式与实施例一是相一致的,能够逐次分配调用空闲的待用线程按照请求队列的排队顺序对尚未处理的业务请求进行处理;不同之处在于,在请求队列中存在尚未处理的业务请求而不存在空闲的待用线程的情况下,服务器则会在待用线程分配调用的过程中陆续创建新的待用线程对尚未处理的业务请求进行处理,直至待用线程的总数已达到预设最大线程数Nmax为止。这样一来,可以通过在服务器启动运行时创建较少的待用线程,减弱线程创建处理对服务器启动初始化操作的不利影响,保证服务器迅速正常运行后,在服务器运行过程中有需要的时候再陆续建立待用线程,从而让服务器始终保持较高的业务请求处理执行效率;在服务器运行过程中后续建立的待用线程在业务请求处理执行完成后也不需要毁灭掉,而是重新释放为空闲状态,继续作为服务器的线程资源等待后续调用,从而使得服务器的业务请求处理性能能够根据需要自行逐步提升至最佳,并最终保持在性能最佳状态。当然,为了保证服务器在启动运行过后正常运行的初期也能够具备比较优良的业务请求处理性能,在服务器启动运行时创建的待用线程数N不宜过少,通常情况下取N为1/2~2/3倍预设最大线程数Nmax较为适宜。同时,本实施例也可以采用实施例一中所述的方式确定预设最大线程数Nmax的取值,以保证服务器的业务请求处理性能可以得到更为优化和充分的利用。
实施例三:
对应的,本发明还提供了一种服务器业务请求处理装置,该装置可以集成于服务器中,也可以作为服务器外的独立装置。该装置的结构如图3所示,包括:
创建模块10,用于预先创建有限数量的空闲的待用线程;
排队模块20,用于在服务器运行过程中,将接收到的业务请求排队形成请求队列;
调度模块30,用于分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理;
状态管理模块40,用于将被分配调用的待用线程在业务请求处理执行完成后重新释放为空闲状态,供服务器后续调用。
具体的,所述创建模块10可以包括第一创建单元,用于在服务器启动运行时,创建Nmax个空闲的待用线程,Nmax为预设最大线程数;
则调度模块30具体可以包括第一调度单元,用于判断当前时刻请求队列中是否存在尚未处理的业务请求;若否,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若是,则判断当前时刻是否存在空闲的待用线程;若否,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若是,则分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回执行所述判断请求队列中是否存在尚未处理的业务请求。
所述创建模块10还可以是具体包括第二创建单元,用于在服务器启动运行时,创建N个空闲的待用线程,且N<Nmax,Nmax为预设最大线程数;
则调度模块30具体可以包括第二调度单元,用于判断当前时刻请求队列中是否存在尚未处理的业务请求;若否,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若是,则判断当前时刻是否存在空闲的待用线程;若是,则分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回执行所述判断请求队列中是否存在尚未处理的业务请求,若否,则判断当前时刻待用线程的总数是否已达到预设最大线程数Nmax;若是,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若否,则再创建一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回执行所述判断请求队列中是否存在尚未处理的业务请求。
上述预设最大线程数Nmax的取值范围为(1±10%)Nthr,Nthr为服务器目标线程数,且可以有:
Nthr=(1+Tw/Tc)Ncpu;
其中,Ncpu表示服务器的CPU数量;Tc表示业务请求处理过程中执行业务请求解析运算处理的平均持续时间;Tw表示业务请求处理过程中执行服务器数据读写操作的平均持续时间。
综合上述三个实施例的举例说明,可以看到,本发明的服务器业务请求处理方法及装置通过分配调用有限数量的待用线程对业务请求进行处理,不仅有效控制了并发执行业务请求处理的线程数量,保证了服务器在运行过程中始终能够保持较高的业务请求处理执行效率,还避免了创建、销毁线程对业务请求处理执行时间和系统资源的消耗,在缩短业务请求处理执行时间的同时也能后利用更多的系统资源提高业务请求处理的执行效率,从而进一步增强了服务器的业务请求处理性能;同时,在本发明的服务器业务请求处理方法和装置的应用过程中,还可以根据具体应用场合的服务器硬件条件以及服务器提供的业务服务情况,合理设置预设最大线程数Nmax的值,让服务器的业务请求处理性能得到更为优化和充分的利用;此外,通过调整本发明方法和装置中待用线程的创建时机以及待用线程的分配调用处理过程,可以优化服务器启动运行和运行过程中的系统资源分配,并使得服务器能够根据需要自行逐步提升业务请求处理性能。本发明的服务器业务请求处理方法及装置不仅仅可以应用于实施例中涉及的搜索服务器,其可以广泛应用于任何业务的服务器当中,让服务器提供更加快速、高效的业务服务,提升用户的业务体验以及对业务服务产品的忠诚度。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (6)

1.一种服务器业务请求处理方法,其特征在于,服务器预先创建有限数量的空闲的待用线程;在服务器运行过程中,将接收到的业务请求排队形成请求队列,并分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理;被分配调用的待用线程在业务请求处理执行完成后,重新释放为空闲状态,供服务器后续调用;
所述服务器预先创建有限数量的空闲的待用线程具体为,在服务器启动运行时,创建N个空闲的待用线程,且N<Nmax,Nmax为预设最大线程数;
在服务器运行过程中,所述分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理的具体分配调用步骤如下:
a)判断当前时刻请求队列中是否存在尚未处理的业务请求;若是,执行步骤b);否则执行步骤e);
b)判断当前时刻是否存在空闲的待用线程;若是,执行步骤c);否则执行步骤d);
c)分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回步骤a);
d)判断当前时刻待用线程的总数是否已达到预设最大线程数Nmax;若是,则执行步骤e);否则,再创建一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回步骤a);
e)经延时Δt后,返回步骤a)。
2.根据权利要求1所述的服务器业务请求处理方法,其特征在于,所述N的取值范围为1/2~2/3倍预设最大线程数Nmax。
3.根据权利要求1或2所述的服务器业务请求处理方法,其特征在于,所述预设最大线程数Nmax的取值范围为(1±10%)Nthr,Nthr为服务器目标线程数,且有:
Nthr=(1+Tw/Tc)Ncpu;
其中,Ncpu表示服务器的CPU数量;Tc表示业务请求处理过程中执行业务请求解析运算处理的平均持续时间;Tw表示业务请求处理过程中执行服务器数据读写操作的平均持续时间。
4.根据权利要求1或2所述的服务器业务请求处理方法,其特征在于,所述延时Δt的取值范围为50~500ms。
5.一种服务器业务请求处理装置,其特征在于,包括:
创建模块,用于预先创建有限数量的空闲的待用线程;
排队模块,用于在服务器运行过程中,将接收到的业务请求排队形成请求队列;
调度模块,用于分配调用空闲的待用线程对请求队列中尚未处理的业务请求进行处理;
状态管理模块,用于将被分配调用的待用线程在业务请求处理执行完成后重新释放为空闲状态,供服务器后续调用;
所述创建模块包括第二创建单元,用于在服务器启动运行时,创建N个空闲的待用线程,且N<Nmax,Nmax为预设最大线程数;
则所述调度模块包括第二调度单元,用于判断当前时刻请求队列中是否存在尚未处理的业务请求;若否,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若是,则判断当前时刻是否存在空闲的待用线程;若是,则分配调用一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回执行所述判断请求队列中是否存在尚未处理的业务请求,若否,则判断当前时刻待用线程的总数是否已达到预设最大线程数Nmax;若是,则经延时Δt后重新进行所述判断请求队列中是否存在尚未处理的业务请求,若否,则再创建一个空闲的待用线程对请求队列中当前时刻排队最靠前的一个尚未处理的业务请求进行处理,然后立即返回执行所述判断请求队列中是否存在尚未处理的业务请求。
6.如权利要求5所述的服务器业务请求处理装置,其特征在于,所述预设最大线程数Nmax的取值范围为(1±10%)Nthr,Nthr为服务器目标线程数,且有:
Nthr=(1+Tw/Tc)Ncpu;
其中,Ncpu表示服务器的CPU数量;Tc表示业务请求处理过程中执行业务请求解析运算处理的平均持续时间;Tw表示业务请求处理过程中执行服务器数据读写操作的平均持续时间。
CN 201110454614 2011-12-30 2011-12-30 一种服务器业务请求处理方法和装置 Active CN102541659B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110454614 CN102541659B (zh) 2011-12-30 2011-12-30 一种服务器业务请求处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110454614 CN102541659B (zh) 2011-12-30 2011-12-30 一种服务器业务请求处理方法和装置

Publications (2)

Publication Number Publication Date
CN102541659A CN102541659A (zh) 2012-07-04
CN102541659B true CN102541659B (zh) 2013-12-18

Family

ID=46348614

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110454614 Active CN102541659B (zh) 2011-12-30 2011-12-30 一种服务器业务请求处理方法和装置

Country Status (1)

Country Link
CN (1) CN102541659B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077381B (zh) * 2012-05-02 2018-09-14 北京奇虎科技有限公司 网页访问请求处理方法和分配方法
CN103974093A (zh) * 2013-01-30 2014-08-06 云联(北京)信息技术有限公司 一种流媒体处理方法及系统
CN104423982B (zh) * 2013-08-27 2018-03-06 阿里巴巴集团控股有限公司 请求的处理方法和处理设备
CN104618493A (zh) * 2015-02-12 2015-05-13 小米科技有限责任公司 数据请求处理方法及装置
US9652027B2 (en) * 2015-04-01 2017-05-16 Microsoft Technology Licensing, Llc Thread scheduling based on performance state and idle state of processing units
CN104834506B (zh) * 2015-05-15 2017-08-01 北京北信源软件股份有限公司 一种采用多线程处理业务应用的方法
CN108268543B (zh) * 2016-12-31 2021-04-06 中国移动通信集团江西有限公司 数据库采集方法和装置
CN107465743B (zh) * 2017-08-03 2020-10-16 苏州浪潮智能科技有限公司 一种处理请求的方法和装置
CN109936593B (zh) * 2017-12-15 2022-03-01 网宿科技股份有限公司 一种消息分发的方法和系统
CN108600774B (zh) * 2018-04-26 2021-01-05 北京金和网络股份有限公司 基于二级分配的直播通道分配方法及播流方法
CN108763046B (zh) * 2018-06-01 2024-04-05 中国平安人寿保险股份有限公司 线程运行监控方法、装置、计算机设备和存储介质
CN108804291A (zh) * 2018-06-19 2018-11-13 郑州云海信息技术有限公司 一种服务器巡检调度方法、装置和存储介质
CN108920275A (zh) * 2018-06-25 2018-11-30 郑州云海信息技术有限公司 一种抓取黑盒日志的方法、装置、设备及计算机存储介质
CN109561133A (zh) * 2018-10-23 2019-04-02 深圳壹账通智能科技有限公司 业务处理方法、装置、设备及计算机可读存储介质
CN111301789B (zh) * 2018-12-11 2022-08-12 顺丰科技有限公司 应用软件打包方法和装置
CN109828892B (zh) * 2018-12-17 2023-02-28 深圳壹账通智能科技有限公司 异步接口的性能测试方法、装置、计算机设备和存储介质
CN109451051B (zh) * 2018-12-18 2021-11-02 百度在线网络技术(北京)有限公司 服务请求处理方法、装置、电子设备及存储介质
CN109922142B (zh) * 2019-02-21 2022-04-19 创新先进技术有限公司 一种文件下载方法、装置及系统
CN110062035A (zh) * 2019-04-02 2019-07-26 中山市凯恩斯裕龙投资管理有限公司 一种基于双队列的http请求方法和装置
CN111935658B (zh) * 2020-07-16 2022-01-18 北京思特奇信息技术股份有限公司 一种解决消息交互中拥塞的方法及系统
CN112801559A (zh) * 2021-04-09 2021-05-14 恒生电子股份有限公司 业务请求的处理方法、装置、设备和存储介质
CN114900805A (zh) * 2022-05-07 2022-08-12 武汉星辰北斗科技有限公司 一种高并发北斗三号短报文收发方法、系统和装置
CN115100228B (zh) * 2022-07-25 2022-12-20 江西现代职业技术学院 图像处理方法、系统、可读存储介质及计算机设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464810A (zh) * 2008-12-31 2009-06-24 金蝶软件(中国)有限公司 服务程序处理方法及服务器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158637A1 (en) * 2003-02-12 2004-08-12 Lee Timothy Charles Gated-pull load balancer
US8676974B2 (en) * 2005-09-29 2014-03-18 International Business Machines Corporation Quality of service (QoS) based planning in web services aggregation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464810A (zh) * 2008-12-31 2009-06-24 金蝶软件(中国)有限公司 服务程序处理方法及服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2007-95078A 2007.04.12

Also Published As

Publication number Publication date
CN102541659A (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
CN102541659B (zh) 一种服务器业务请求处理方法和装置
CN106980546B (zh) 一种任务异步执行方法、装置及系统
US9104498B2 (en) Maximizing server utilization within a datacenter
EP3073374B1 (en) Thread creation method, service request processing method and related device
CN104252390B (zh) 资源调度方法、装置和系统
US8381215B2 (en) Method and system for power-management aware dispatcher
US9396010B2 (en) Optimization of packet processing by delaying a processor from entering an idle state
WO2012103728A1 (zh) 热点域虚拟机cpu调度方法及虚拟机系统
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
WO2010082244A1 (ja) 情報処理装置および情報処理方法
US20130061220A1 (en) Method for on-demand inter-cloud load provisioning for transient bursts of computing needs
JP4992408B2 (ja) ジョブ割当プログラム、方法及び装置
WO2014126810A1 (en) Centralized task scheduling
US20160154676A1 (en) Method of Resource Allocation in a Server System
KR101357975B1 (ko) 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치
CN103870337A (zh) 一种基于seda的esb组件实现方法
KR101373786B1 (ko) 자원-기반 스케쥴러
CN111371848A (zh) 一种请求处理方法、装置、设备及存储介质
US20140115601A1 (en) Data processing method and data processing system
CN115878260A (zh) 一种低碳自适应云主机任务调度系统
CN109491780B (zh) 多任务调度方法及装置
CN117472570A (zh) 用于调度加速器资源的方法、装置、电子设备和介质
WO2023165485A1 (zh) 调度方法及计算机系统
JP4363417B2 (ja) コンピュータ装置およびコンピュータ制御方法
CN114675972B (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170626

Address after: Jiulongpo District from four Science Park Road 400012 Chongqing City No. 257 telecom industrial building on the third floor

Patentee after: Chongqing Zhong ran Information Industry Co., Ltd.

Address before: The 401121 northern New District of Chongqing municipality Mount Huangshan Road 5 south of Mercury Technology Building 1 floor office No. 3

Patentee before: Chongqing Xinmei Agricultural Information Technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170721

Address after: 401147, room 2, building 168, Moco center, 703 Xin Nan Road, Chongqing, Yubei District

Patentee after: Chongqing super Body Technology Co., Ltd.

Address before: Jiulongpo District from four Science Park Road 400012 Chongqing City No. 257 telecom industrial building on the third floor

Patentee before: Chongqing Zhong ran Information Industry Co., Ltd.