应用服务器的性能优化方法

文档序号:6408426阅读:297来源:国知局
专利名称:应用服务器的性能优化方法
技术领域
本发明涉及一种应用服务器的性能优化方法,属于计算机应用技术领域。
背景技术
应用服务器是网络环境下应用程序的高层运行环境,为应用系统提供构件运行管理、通信、命名、事务、安全等服务功能,使应用开发人员能将精力集中于目标系统的业务逻辑,简化了应用系统的开发和维护。应用服务器本身是一种服务器程序,它必须具备良好的性能以满足应用程序的需求。性能优化通常针对大量并发客户请求同时到达的情况,目标是尽可能增加吞吐量和降低响应时间,使应用服务器工作在一种最佳状态。
目前的应用服务器多采用多线程管理调度技术,多线程管理调度技术主要是通过多个线程并发执行的方式,减少处理器的闲置时间,增加处理器的吞吐能力。但如果对多线程的使用不加限制,则可能适得其反,反而降低吞吐能力。这是因为当线程增多后,一方面创建、销毁线程需要消耗处理器资源,另一方面多个线程之间频繁切换将会占用大量处理器时间,使得处理器处于“空忙”状态,CPU有效利用率低,真正用于处理请求的有效时间很少,导致单个任务的处理时间增加,总吞吐量下降,而亟待加以进一步改进。

发明内容
本发明所要解决的技术问题在于提供一种应用服务器的性能优化方法,提高处理器的利用率,增加吞吐量,能够简单、有效、可靠地提高应用服务器系统的性能。
本发明所要解决的技术问题是通过如下技术方案实现的一种应用服务器的性能优化方法,它包括以下步骤步骤一、网络引擎接收网络服务请求,创建相应的任务。
步骤二、网络引擎将任务与服务对象关联,然后将任务交给任务调度器。
步骤三、任务调度器首先查看当前线程池中是否存在处于睡眠状态的线程,如果有,任务调度器唤醒睡眠线程处理该任务;否则任务调度器判断当前线程池中工作线程的数目m,所述的线程池具有一个最大上限T_M,该线程池允许的最大并发线程数目为T_M。如果m<T_M,任务调度器在线程池中创建一个新线程处理该任务;如果m=T_M,线程池已经饱和,系统中已经有T_M个线程工作,任务调度器将任务放到任务队列中进行排队;所述的任务队列容量为无限大。
步骤四、线程池中的工作线程在完成当前任务后,将向任务队列申请新任务。如果任务队列中有任务存在,则工作线程获得新任务执行;如果任务队列中没有任务待处理,则工作线程转入睡眠,等待任务队列有了新任务后将其唤醒。
本发明采用有限线程池加无限任务队列的方式对应用线程进行管理,有限线程池可以有效控制系统中的并发线程数目,从而减少线程调度与竞争开销,提高处理器的有效利用率。
本发明还采用了本地通信优化技术,其目的是通过将进程内网络调用转化为本地调用,以减少网络开销,更为重要的是配合线程池技术,在一个线程内用一个任务完成一个调用链。
所述的步骤二还包括所有服务对象首先都向本地进程中的本地服务对象注册中心进行注册,将本地服务句柄注册到该本地服务对象注册中心。网络引擎将任务与服务对象关联时,判断本服务对象是否要求调用其它服务对象提供服务,若不要求调用其它服务对象提供服务,网络引擎将任务交给任务调度器;若要求调用其它服务对象提供服务,首先要到本地服务对象注册中心查找所需调用的服务对象是否是本地对象;若所需调用的服务对象不是本地对象,网络引擎将任务交给任务调度器;若所需调用的服务对象是本地对象,则本服务对象与其所需调用的服务对象之间进行本地通信,在本线程内用同一个任务完成服务对象调用请求。
本发明针对服务器应用程序并发性强的特点,一方面运用多线程管理调度技术尽可能提高处理器的利用率,增加吞吐量;另一方面优化本地通信,用同一个线程执行本地调用链,从而降低并发度,减少竞争开销,避免不必要的本地网络通信。本发明的特点在于将多线程管理调度技术与本地通信优化技术相结合,从整体上互相配合,共同实现性能优化的目标。上述两项技术配合使用可以取得最好效果。


图1为本发明的工作流程图;图2为本发明的一个任务完成一个服务请求链的工作示意图。
具体实施例方式
以下结合附图和具体实施例对本发明的技术方案进一步说明如图1所示,一种应用服务器的性能优化方法,它包括以下步骤步骤一、网络引擎2接收网络服务请求1,创建相应的任务4。
步骤二、网络引擎2将任务4与服务对象3关联,然后将任务4交给任务调度器5。
步骤三、任务调度器5判断当前线程池6中是否存在睡眠状态的线程,如果有则唤醒睡眠线程执行该任务,否则判断工作线程61的数目m,线程池6具有一个最大上限T_M,该线程池6允许的最大并发线程数目为T_M。如果m<T_M,任务调度器5在线程池6中创建一个新线程处理该任务;如果m=T_M,线程池6已经饱和,系统中已经有T_M个线程工作,任务调度器5将任务放到任务队列7中进行排队,任务队列7容量为无限大。
步骤四、线程池6中的工作线程61在完成当前任务后,将向任务队列7申请新任务。如果任务队列7中有任务存在,则工作线程61获得新任务执行;如果任务队列7中没有任务待处理,则工作线程61转入睡眠,等待任务队列7有了新任务后将其唤醒。
本发明采用有限线程池加无限任务队列的方式对应用线程进行管理,有限线程池可以有效控制系统中的并发线程数目,从而减少线程调度与竞争开销,提高处理器的有效利用率。
本发明还采用了本地通信优化技术,其目的是通过将进程内网络调用转化为本地调用,以减少网络开销,更为重要的是配合线程池技术,在一个线程内用一个任务完成一个调用链。
如图2所示,所述的步骤二还包括所有服务对象3首先都向本地进程中的本地服务对象注册中心8进行注册,将本地服务句柄注册到该本地服务对象注册中心8。网络引擎2将任务与服务对象3关联时,判断本服务对象31是否要求调用其它服务对象32或服务对象33提供服务,若不要求调用其它服务对象32或服务对象33提供服务,网络引擎2将任务4交给任务调度器5;若要求调用其它服务对象32或服务对象33提供服务,首先要到本地服务对象注册中心8查找所需调用的服务对象32或服务对象33是否是本地对象;若所需调用的服务对象32或服务对象33不是本地对象,网络引擎2将任务4交给任务调度器5;若所需调用的服务对象32或服务对象33是本地对象,则本服务对象31与其所需调用的服务对象32或服务对象33之间进行本地通信,在本线程内用同一个任务4完成服务对象调用请求。
本发明针对服务器应用程序并发性强的特点,一方面运用多线程管理调度技术尽可能提高处理器的利用率,增加吞吐量;另一方面优化本地通信,用同一个线程执行本地调用链,从而降低并发度,减少竞争开销,避免不必要的本地网络通信。本发明的特点在于将多线程管理调度技术与本地通信优化技术相结合,从整体上互相配合,共同实现性能优化的目标。上述两项技术配合使用可以取得最好效果。
以下为本发明在实际测试中的测试结果,说明了本发明对性能优化的效果。测试环境应用服务器与数据库服务器硬件De11PE2400 CPU-双至强2.8G;内存-1G操作系统Windows 2000 Server,ServicePack 3数据库Oracle 8i客户端硬件PC CPU-AMD XP 1600+;内存-256M操作系统Windows 2000 Professional,ServicePack 3测试结果如图3所示。
本测试使用的测试用例是一个模拟电子商务发送和处理定单的过程,客户端模拟实际客户发送请求。其中,速率代表客户端发送请求的并发速率,越大表示单位时间内客户发送请求越多;定单事务速率,表示服务器生成定单的速率,定单处理速率表示服务器处理定单的速率,而吞吐量则是综合上面两个速率给出综合度量值,数值越大,表示服务器处理能力越强。在25x速率时,吞吐量可以达到2500,且响应时阀可以达到要求。而相同测试环境下,没有应用本发明的PKUAS则无法通过测试,在1x速率下,响应时间已经无法满足要求;吞吐量则在3x速率下达到250左右的极值。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种应用服务器的性能优化方法,其特征在于它包括以下步骤步骤一、网络引擎接收网络服务请求,创建相应的任务;步骤二、网络引擎将任务与服务对象关联,然后将任务交给任务调度器;步骤三、任务调度器首先查看当前线程池中是否存在处于睡眠状态的线程,如果有,任务调度器唤醒睡眠线程处理该任务;否则判断当前线程池中工作线程的数目m,如果m小于线程池的最大上限T_M,任务调度器在线程池中创建一个新线程处理该任务;如果m等于T_M,线程池已经饱和,系统中已经有T_M个线程工作,任务调度器将任务放到任务队列中进行排队;步骤四、线程池中的工作线程在完成当前任务后,将向任务队列申请新任务;如果任务队列中有任务存在,则工作线程获得新任务执行;如果任务队列中没有任务待处理,则工作线程转入睡眠,等待任务队列有了新任务后将其唤醒。
2.根据权利要求1所述的应用服务器的性能优化方法,其特征在于所述的任务队列容量为无限大。
3.根据权利要求1所述的应用服务器的性能优化方法,其特征在于所述的步骤二还包括所有服务对象首先都向本地进程中的本地服务对象注册中心进行注册,将本地服务句柄注册到该本地服务对象注册中心。
4.根据权利要求3所述的应用服务器的性能优化方法,其特征在于所述的步骤二还包括网络引擎任务与服务对象关联时,判断本服务对象是否要求调用其它服务对象提供服务,若不要求调用其它服务对象提供服务,网络引擎将任务交给任务调度器;若要求调用其它服务对象提供服务,首先要到本地服务对象注册中心查找所需调用的服务对象是否是本地对象;若所需调用的服务对象不是本地对象,网络引擎将任务交给任务调度器;若所需调用的服务对象是本地对象,则本服务对象与其所需调用的服务对象之间进行本地通信,在本线程内用同一个任务完成服务对象调用请求。
全文摘要
本发明涉及一种应用服务器的性能优化方法,网络引擎接收网络服务请求,创建相应的任务并与服务对象关联,然后将任务交给任务调度器;如果当前线程池中工作线程的数目m小于线程池的最大上限T_M,任务调度器在线程池中创建一个新线程处理该任务;如果m=T_M,任务调度器将任务放到任务队列中进行排队;线程池中的工作线程在完成当前任务后,将向任务队列申请新任务。采用有限线程池加无限任务队列的方式对应用线程进行管理,有限线程池可以有效控制系统中的并发线程数目,从而减少线程调度与竞争开销,提高处理器的有效利用率,增加处理器的有效工作时间,从而增加应用服务器的吞吐量。
文档编号G06F9/46GK1588316SQ20041005003
公开日2005年3月2日 申请日期2004年6月29日 优先权日2004年6月29日
发明者梅宏, 曹东刚, 黄罡, 刘天成 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1