CN102147746B - 动态线程池管理系统及管理方法 - Google Patents

动态线程池管理系统及管理方法 Download PDF

Info

Publication number
CN102147746B
CN102147746B CN201110060571.0A CN201110060571A CN102147746B CN 102147746 B CN102147746 B CN 102147746B CN 201110060571 A CN201110060571 A CN 201110060571A CN 102147746 B CN102147746 B CN 102147746B
Authority
CN
China
Prior art keywords
subapplication
thread
request
threshold value
predefined maximum
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
CN201110060571.0A
Other languages
English (en)
Other versions
CN102147746A (zh
Inventor
R·T·高达
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102147746A publication Critical patent/CN102147746A/zh
Application granted granted Critical
Publication of CN102147746B publication Critical patent/CN102147746B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

动态地管理与多个子应用程序相关联的线程池。接收对子应用程序中的至少一个的请求。确定当前分配给子应用程序中的至少一个的线程数量。将所确定的线程数量与预定义的最大线程阈值作比较。如果所确定的线程数据不大于预定义的最大线程阈值,则分配线程池中的线程以处理所接收的请求。各实施例使得能够控制线程池中分配给子应用程序中的每一个的线程数量。另一些实施例基于子应用程序的等待时间来管理子应用程序的线程。

Description

动态线程池管理系统及管理方法
技术领域
本发明涉及线程管理领域,尤其涉及对线程的动态管理。 
背景技术
服务器被设计成响应于来自客户机的请求来提供服务。使服务器能够并发地处理若干请求的常见方法是使用包括用于执行任务所创建的一些线程的线程池。线程池中的线程数量是资源,并且通常,存在许多比线程多得多的任务。如果线程池中的线程数量太少,则存在较少的并发性,可能降低总体请求处理吞吐量。另一方面,如果线程池中的线程数量太大,则线程之间的上下文改变浪费更多时间,并且存在较大机会的锁竞争(例如,具有对相同资源的独占访问的线程)。进一步的结果是服务器吞吐量的减少。 
当应用程序利用单个线程池来服务若干相关联的子应用程序时,当仅仅几个子应用程序导致处理延迟时,所有的子应用程序可经历该延迟。此外,当与子应用程序相关联的线程试图与经历延迟的子应用程序交互时,这些线程可被阻止,直到解决了延迟的子应用程序。应用程序性能的下降导致用户体验降级。 
发明内容
本发明的各实施例动态地管理与多个子应用程序相关联的线程池。应用程序和多个子应用程序的配置信息连同对多个子应用程序中的至少一个的请求一起被接收。确定当前被分配给子应用程序中的至少一个的线程数量,并且将其与来自配置信息的子应用程序的预定义的最大阈值作比较。如果线程数量不大于预定义的最大线程阈值,则分配线程池中的线程来处理请求。然而,如果线程数量大于预定义的最大线程阈值,则生成出错消息。 
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。 
附图说明
图1是示出接收和处理来自客户机的请求的服务器的示例性框图。 
图2是具有存储用于动态地管理线程池的组件的存储器区域的服务器的示例性框图。 
图3A和图3B是示出用于动态地管理线程池的过程的示例性流程图。 
在附图范围中,对应的参考符号表示对应的部分。 
具体实施方式
参考附图,本发明的各实施例提供用于经由服务器106动态地管理服务应用程序108和多个子应用程序110的线程池208的系统100。在某些实施例中,常见语言运行时线程池服务具有多个相关联的应用程序的网站。本发明的各实施例向服务器106提供动态地改变线程池208中的线程数量、以及基于当前分配给子应用程序110的每一个的线程数量来动态地维护该分配给子应用程序110中的每一个的线程数量的能力。 
本发明的另一些实施例基于一个或多个子应用程序110所经历的等待时间来动态地控制线程池208中的线程数量(例如,线程池208中的线程数量与等待时间成反比)。这隔离了潜在子应用程序可对其他子应用程序的影响。更具体地,如果子应用程序变成潜在的,则直到潜在子应用程序的响应时间小于预定义的阈值,可分配给潜在子应用程序的线程数量减小到例如一个。随后绑定到潜在子应用程序的请求失败,这还引起出错信息被发送回客户机102。这一失败机制防止线程被分配以服务潜在子应用程序以便包含等待时间、并且使得更多线程可用于对绑定到非潜在的其他子应用程序的请求进行服务。等待时间可与诸如处理等待时间、网络等待时间或其他等待时间等子应用程序的任何组件或操作相关联。 
再次参考图1,系统100的示例性框图包括客户机102、网络104和服务器106。客户机表示诸如移动计算设备、膝上型计算机、上网本计算机、游戏控制台等之类的任何计算设备。服务器106被配置成经由网络104与客户机102进行通信。服务器106包括或可以访问应用程序108和子应用程序110。 
尽管参考作为服务器计算设备的服务器106示出并且描述了本发明的一些实施方式,但本发明的各方面可用于执行本文示出并且描述的功能的任何设备或其等价物,诸如在对等系统中。例如,本发明的实施例可用于上网本、台式计算设备、膝上型计算机、以及其他计算设备。在这些实施例中,数据可由 云服务来存储并可由实现本发明的功能的任何计算设备来访问。 
接着参考图2,服务器106具有用于存储动态地管理线程池208的组件的存储器区域202。服务器106还包括显示器204和至少一个处理器206。显示器204可以是例如电容式触摸屏显示器,该电容式触摸屏显示器被集成到服务器106中、或外置于服务器106。在充当用户输入选择设备的显示器204中提供用户输入功能。显示器204被配置为响应于显示器204上的用户按压接触以选择性地执行功能。由此,用户可以例如通过接触显示器204的表面以及此处提供的其他功能来输入最大阈值。 
存储器区域202存储线程池208以及一个或多个计算机可执行组件。示例性组件包括但不限于接口组件210、线程池组件212、等待时间组件214、以及阈值组件216。虽然线程池208和组件210、212、214、216被示为存储在存储器区域202,但线程池208和组件210、212、214、216可被存储在远离服务器106的存储器区域并且从其中执行。例如,线程池208可被存储在云服务、数据库或可由服务器106访问的其他存储器区域中。这些实施例减轻了服务器106上的计算和存储负担。 
处理器206执行用于实现本发明的各方面的计算机可执行指令。在某些实施方式中,处理器206通过执行计算机可执行指令或通过以其他方式编程来变换成专用微处理器。例如,存储器206可执行接口组件210、线程池组件212、等待时间组件214、以及阈值组件216。接口组件210当被理器206执行时使得处理器206接收应用程序108和子应用程序110的配置信息,并且接收来自客户机102的对子应用程序110中的至少一个的请求。配置信息包括,例如,预定义的最大线程阈值,并且可任选地包括对子应用程序中的每一个的预定义的最大等待时间阈值。配置信息可由与应用程序108相关联的开发者、用户、或另一实体来设置。 
线程池组件212当被理器206执行时使得处理器206确定当前分配给子应用程序中的至少一个的线程数量,确定当前分配给子应用程序中的至少一个的线程数量是否大于预定义的最大线程阈值,并且如果当前分配给子应用程序中的至少一个的线程数量不大于预定义的最大线程阈值、则分配一线程来处理所接收的请求。等待时间组件214当被处理器206执行时使得处理器206确定子 应用程序110中的至少一个的等待时间。接口组件210当被处理器206执行时还使得处理器206在所确定的等待时间大于预定义的等待时间阈值时向客户机102发送出错消息。例如,出错信息可包括“xxx秒后重试”建议。阈值组件216当被处理器206执行时使得处理器206在所确定的等待时间大于预定义的最大等待时间阈值时将预定义的最大线程阈值减小到例如一,此外,阈值组件216当被处理器206执行时使得处理器206在所确定的等待时间不大于预定义的最大等待时间阈值且当前预定义的最大线程阈值为1时增加预定义的最大线程阈值。 
一般而言,处理器206可以用指令来编程,诸如此处参考图2中示出的组件以及图3A和图3B中示出且接着描述的操作来描述的指令。 
接着参考图3A和图3B,示例性流程图示出了用于动态地管理与应用程序108和子应用程序110相关联的单个线程池(例如,线程池208)的过程。应用程序108启动之后,在302,接收应用程序108和子应用程序110的配置信息。在一个替换实施例中,应用程序108和子应用程序110的配置信息被存储在存储器区域202中,并且在启动应用程序108之后,可将所存储的配置信息与所接收的配置信息作比较,并且如果需要则基于比较来更新所存储的配置信息。在一个实施例中,配置信息包括与子应用程序110中的一个或多个相关联的预定义的最大线程阈值。子应用程序110中的每一个之间的预定义的最大线程阈值可以不同。例如,预定义的最大线程阈值可以基于子应用程序中的每一个接收的“通信”量,并且大小可由此随一个子应用程序到另一个而变化。由此,具有较低等级的通信量的子应用程序在与子应用程序110中的其他子应用程序作比较时,它具有的预定义最大线程阈值可以比子应用程序110中的其他子应用程序低,反之亦然。在又一个实施例中,配置信息还可包括与子应用程序110中的一个或多个相关联的预定义的最大等待时间阈值。 
在304,从客户机102接收对子应用程序110中的至少一个(例如,目标子应用程序)的请求。在接收请求之后,在306确定当前分配给目标子应用程序的线程数量。在308,所确定的线程数量和与目标子应用程序相关联的预定义的最大线程阈值作比较。与目标子应用程序相关联的预定义的最大阈值被存储在所接收/存储的配置信息中。在310,确定所确定的分配给目标子应用程序 的线程数量是否大于预定义的最大线程阈值。在312,如果所确定的分配给目标子应用程序的线程数量大于与目标子应用程序相关联的预定义的最大线程阈值,则生成出错信息并且将其发送给客户机102。 
在314,如果所确定的分配给目标子应用程序的线程数量不大于预定义的最大线程阈值,则确定目标子应用程序的等待时间。在一个实施例中,通过在预定义的时间段(例如,一分钟、五分钟、十分钟)内计算目标子应用程序处理请求的平均响应时间来确定等待时间。在又一实施例中,可以直到目标子应用程序处理预定义数量的请求,才确定等待时间。例如,直到目标子应用程序处理十个请求、五十个请求或甚至几百个请求,才确定等待时间。由此,在此示例中,一旦目标子应用程序处理预定义数量的请求,则确定用于处理预定义数量的请求中的每一个的平均响应时间。在一个实施例中,预定义数量的请求可被存储在所接收/存储的配置信息中。 
在316,将目标子应用程序的等待时间和与目标子应用程序相关联的预定义的最大等待时间阈值作比较。在318,确定该至少子应用程序的所确定的等待时间是否大于与目标子应用程序相关联的预定义的最大等待时间阈值。在320,如果该至少子应用程序的所确定的等待时间大于与目标子应用程序相关联的预定义的最大等待时间阈值,则生成出错信息并且将其发送给客户机102。在322,如果该至少子应用程序的所确定的等待时间大于与目标子应用程序相关联的预定义的最大等待时间阈值,则将预定义的最大线程阈值减小到大于零但接近于一的值。将最大线程阈值减小到非零值以动态地检测潜在子应用程序何时不再是潜在的。将最大线程阈值设置得过高防止了线程阻塞。在一个实施例中,如果该至少子应用程序的所确定的等待时间大于与目标子应用程序相关联的预定义的最大等待时间阈值,则将预定义的最大线程阈值减小到一。动态地控制可分配给目标子应用程序的线程数量(例如,减小可分配给一个线程的线程数量)隔离了目标子应用程序可能对子应用程序110中的其他子应用程序的每一个的影响。因此,从例如客户机102接收的且被绑定到目标子应用程序的任何请求都失败了。允许所接收的每一信号失败防止了线程被分配给目标子应用程序,并且使得更多线程可用于对绑定到子应用程序110中的所有其他子应用程序的请求进行服务。 
在减小与目标子应用程序相关联的预定义的最大阈值之后,直到经过预定义的时间段或目标子应用程序处理了预定义数量的请求,才确定该至少一个子应用程序的等待时间。在一个实施例中,当目标子应用程序被确定为潜在的时,减小预定义的时间段或所处理的请求的预定义数量。由此,在此示例中,当目标子应用程序被确定为潜在的时,预定义的时间段或处理请求的预定义数量比当目标子应用程序被确定为非潜在的时低。一旦已经过预定义的时间段或已经处理了预定义数量的请求,则确定在预定义的时间段用于处理请求的平均响应时间,或确定用于处理预定义数量的请求中的每一个的平均响应时间。确定用于处理请求的平均响应时间不大于与目标子应用程序相关联的预定义的最大等待时间阈值之后,将所减小的预定义的最大线程阈值增加到例如所减小的预定义的最大线程阈值之前的目标子应用程序的预定义的最大线程阈值。 
在324,如果所确定的分配给目标子应用程序的线程数量不大于与至少一个子应用程序相关联的预定义的最大线程阈值,并且如果所确定的目标子应用程序的等待时间不大于与至少一个子应用程序相关联的预定义的最大等待时间阈值,则分配来自线程池208的线程以处理所接收的请求。在326,在分配线程以处理所接收的请求之后,将分配给目标子应用程序的线程数量加一。在328,处理所接收的请求,并且在330,将满足所接收的请求的响应发送给客户机102。在322,在将满足所接收的请求的响应发送给客户机之后,将分配给目标子应用程序的线程数量减一。 
虽然本发明的某些实施例构想了服务器106执行在图3A和图3B中示出的操作,但在某些实施例中客户机102可执行一个或多个操作。 
示例性操作环境
诸如服务器106和客户机102等此处所描述的计算机或计算设备具有一个或多个处理器或处理单元、系统存储器和某种形式的计算机可读介质。作为示例而非限制,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性与非易失性、可移动与不可移动介质。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任 一种的组合也包括在计算机可读介质的范围之内。 
计算机可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网络化环境中操作。尽管结合示例性计算系统环境进行了描述,但本发明的各实施例可用于众多其它通用或专用计算系统环境或配置。计算系统环境不旨在对本发明的任何方面的使用范围或功能提出任何限制。此外,计算机环境也不应被解释成对于示例性操作环境中所示出的任一组件或其组合有任何依赖或要求。适用于本发明各方面的公知的计算系统、环境和/或配置的示例包括,但不限于:个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、移动电话、网络PC、小型机、大型机、包括上述系统或设备中的任一个的分布式计算机环境等。 
可以在由一台或多台计算机或其他设备执行的诸如程序模块之类的计算机可执行的指令的一般上下文中来描述本发明的各实施例。计算机可执行指令可以被组织成一个或多个计算机可执行组件或模块。一般而言,程序模块包括,但不限于,执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件,以及数据结构。可以利用任何数量的这样的组件或模块及其组织来实现本发明的各方面。例如,本发明的各方面不仅限于附图中所示出并且在此处所描述的特定计算机可执行指令或特定组件或模块。本发明的其他实施例可以包括具有比此处所示出和描述的功能更多或更少功能的不同的计算机可执行指令或组件。本发明的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。 
本发明的各方面当被配置成执行此处所描述的指令时将通用计算机变换成专用计算设备。 
本文所示出且描述的实施例以及本文未具体地描述但在本发明的各方面的范围内的实施例构成了用于基于线程计数和等待时间来动态地维护一个线程池中的多个子应用程序的多个线程的示例性装置,以及用于动态地维护分配给多个子应用程序中的每一个的线程数量的示例性装置。 
此处所示出和描述的本发明的各实施例中的操作的执行或实现的顺序不是必需的,除非另外指定。即,除非另外指定,否则操作可以按任何顺序执行, 且本发明的各实施例可以包括比此处所公开的操作更多或更少的操作。例如,构想了在一个操作之前、同时或之后执行另一个操作是在本发明的各方面的范围之内的。 
当介绍本发明的各方面的元素或其实施例时,冠词“一”、“一个”、“该”、“所述”旨在表示有元素中的一个或多个。术语“包括”、“包含”以及“具有”旨在是包含性的,并意味着除所列出的元素以外还可以有额外的元素。 
已经详细地描述了本发明的各方面,显然,在不偏离所附权利要求书所定义的本发明的各方面的范围的情况下,可以进行各种修改和变化。在不偏离本发明的各方面的范围的情况下,可以对上面的构造、产品以及方法作出各种更改,上面的描述中所包含的和各个附图中所示出的所有主题应该解释为说明性的,而不是限制性的。 

Claims (15)

1.一种用于动态地管理与多个子应用程序(110)相关联的线程池(208)的系统,所述系统包括:
用于在存储器区域(202)中存储应用程序(108)以及与其相关联的多个子应用程序(110)的配置信息的装置,所述配置信息包括与所述多个子应用程序(110)的一个或多个相关联的预定义的最大线程阈值,所述配置信息还包括与所述多个子应用程序(110)的一个或多个相关联的预定义的最大等待时间阈值,所述多个子应用程序(110)与一个线程池(208)相关联;
用于接收所述应用程序(108)和所述多个子应用程序(110)的配置信息的装置;
用于接收对所述子应用程序(110)中的至少一个的请求的装置;
用于确定当前分配给所述子应用程序(110)中的至少一个的线程数量的装置;
用于将所确定的线程数量与存储在所述存储器区域(202)中的预定义的最大线程阈值作比较以生成第一比较结果的装置;
用于确定所述子应用程序(110)中的至少一个的等待时间的装置;
用于将所确定的等待时间与存储在所述存储器区域(202)中的所述预定义的最大等待时间阈值作比较以生成第二比较结果的装置;以及
用于基于所述第一比较结果和所述第二比较结果来分配所述一个线程池(208)中的线程以处理所接收的请求的装置。
2.如权利要求1所述的系统,其特征在于,还包括用于接收来自客户机的请求的装置,并且还包括用于如果所确定的线程数量大于所述预定义的最大线程阈值,则将出错消息发送给所述客户机的装置。
3.如权利要求1所述的系统,其特征在于,还包括用于在预定义的时间段内计算所述子应用程序中的至少一个的平均响应时间以处理请求的装置。
4.如权利要求1所述的系统,其特征在于,还包括用于基于线程计数和等待时间来动态地维护所述一个线程池中多个子应用程序的多个线程的装置。
5.如权利要求1所述的系统,其特征在于,还包括动态地维护分配给所述多个子应用程序中的每一个的线程数量的装置。
6.一种用于动态地管理与多个子应用程序相关联的线程池的方法,包括:
接收应用程序(108)以及多个子应用程序(110)的配置信息,所述子应用程序(110)与一个线程池(208)相关联;
接收对所述子应用程序(110)中的至少一个的请求;
确定当前分配给所述子应用程序(110)中的至少一个的线程数量;
将所确定的线程数量与来自所接收的配置信息的预定义的最大线程阈值作比较;
如果所确定的线程数量不大于所述预定义的最大线程阈值,则分配所述一个线程池(208)中的线程以处理所接收的请求;以及
如果所确定的线程数量大于所述预定义的最大线程阈值,则生成出错消息。
7.如权利要求6所述的方法,其特征在于,还包括在分配线程以处理所接收的请求之后,增加分配给所述子应用程序的至少一个的线程数量。
8.如权利要求6所述的方法,其特征在于,所述配置信息还包括预定义的最大等待时间阈值,并且还包括:
确定所述子应用程序中的至少一个的等待时间;以及
将所确定的所述子应用程序中的至少一个的等待时间与所述预定义的最大等待时间阈值作比较。
9.如权利要求8所述的方法,其特征在于,接收所述请求包括接收来自客户机的所述请求,并且还包括如果所确定的等待时间大于所述预定义的最大等待时间阈值,则将出错消息发送给所述客户机。
10.如权利要求8所述的方法,其特征在于,还包括如果所确定的等待时间大于所述预定义的最大等待时间阈值,则减小所述预定义的最大线程阈值。
11.如权利要求8所述的方法,其特征在于,还包括如果所确定的等待时间大于所述预定义的最大等待时间阈值,则将所述预定义的最大线程阈值减小到数量一。
12.如权利要求6所述的方法,其特征在于,接收所述请求包括接收来自客户机的所述请求,分配的线程处理所接收的请求,并且还包括:
将指示满足所接收的请求的响应发送给所述客户机;以及
在将所述响应发送给所述客户机之后,将分配给所述子应用程序中的至少一个的线程数量减一。
13.如权利要求6所述的方法,其特征在于,确定所述子应用程序中的至少一个的等待时间包括在预定义的时间段内计算所述多个子应用程序中的至少一个的平均响应时间用于处理请求。
14.如权利要求6所述的方法,其特征在于,确定所述子应用程序中的至少一个的等待时间包括计算所述子应用程序中的至少一个的平均响应时间用于处理预定义数量的请求。
15.一种用于动态地管理与多个子应用程序相关联的线程池的系统,所述系统包括:
用于接收应用程序和多个子应用程序的配置信息并且还接收对所述子应用程序中的至少一个的请求的装置;
用于基于当前分配给所述子应用程序的至少一个的线程数量与预定义的最大线程阈值的比较来分配线程用于处理所接收的请求的装置;
用于确定所述子应用程序中的至少一个的等待时间的装置;以及
用于基于所确定的等待时间来改变所述预定义的最大线程阈值的装置。
CN201110060571.0A 2010-03-05 2011-03-04 动态线程池管理系统及管理方法 Active CN102147746B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/718,237 US8381216B2 (en) 2010-03-05 2010-03-05 Dynamic thread pool management
US12/718,237 2010-03-05

Publications (2)

Publication Number Publication Date
CN102147746A CN102147746A (zh) 2011-08-10
CN102147746B true CN102147746B (zh) 2014-01-29

Family

ID=44422021

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110060571.0A Active CN102147746B (zh) 2010-03-05 2011-03-04 动态线程池管理系统及管理方法

Country Status (2)

Country Link
US (1) US8381216B2 (zh)
CN (1) CN102147746B (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8381216B2 (en) * 2010-03-05 2013-02-19 Microsoft Corporation Dynamic thread pool management
US8621479B2 (en) 2012-01-05 2013-12-31 The Boeing Company System and method for selecting task allocation method based on load balancing and core affinity metrics
CN103888279A (zh) * 2012-12-20 2014-06-25 阿里巴巴集团控股有限公司 基于反馈控制循环的资源池动态管理的方法和系统
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
CN103902361A (zh) * 2014-04-04 2014-07-02 浪潮电子信息产业股份有限公司 一种可动态调节尺寸的线程池
US9547521B2 (en) * 2014-09-25 2017-01-17 Oracle International Corporation System and method for supporting dynamic thread pool sizing in a distributed data grid
CN104410671B (zh) * 2014-11-03 2017-11-10 深圳市蓝凌软件股份有限公司 一种快照抓取方法和数据监控装置
CN104461845B (zh) * 2014-11-17 2017-05-17 中国航天科工集团第二研究院七〇六所 日志采集系统线池自适应方法
CN106528065B (zh) * 2015-09-14 2019-11-08 阿里巴巴集团控股有限公司 一种线程获取方法及设备
CN106375337B (zh) * 2016-09-30 2019-12-06 杭州迪普科技股份有限公司 一种基于多线程的报文交互方法及装置
CN107357640B (zh) * 2017-06-30 2021-06-11 北京奇虎科技有限公司 多线程数据库的请求处理方法及装置、电子设备
CN107704322B (zh) * 2017-09-30 2020-08-25 上海大象金泰科技有限公司 请求分配方法及装置
CN110023907B (zh) * 2017-10-09 2021-08-20 华为技术有限公司 一种处理方法及装置
CN109840142B (zh) * 2018-12-15 2024-03-15 平安科技(深圳)有限公司 基于云监控的线程控制方法、装置、电子设备及存储介质
US11234157B2 (en) * 2019-04-08 2022-01-25 T-Mobile Usa, Inc. Network latency aware mobile edge computing routing
CN111913815A (zh) * 2020-07-12 2020-11-10 中信银行股份有限公司 调用请求的处理方法、装置、电子设备及可读存储介质
CN111897647B (zh) * 2020-09-29 2021-01-26 杭州未名信科科技有限公司 一种多核系统中多线程调度方法、装置及设备
CN113765817A (zh) * 2020-11-20 2021-12-07 北京沃东天骏信息技术有限公司 上游系统限流方法和装置
US12008416B2 (en) * 2021-06-29 2024-06-11 Capital One Services, Llc Systems and methods for choosing an appropriate scaling technique for allocating computational resources to distributed applications
CN114995996B (zh) * 2022-04-26 2024-09-03 支付宝(杭州)信息技术有限公司 用于生成线程池的配置信息的方法、任务处理方法和装置
US20230359359A1 (en) * 2022-05-04 2023-11-09 Nutanix, Inc. Elastic request handling technique for optimizing workload performance
US20240160451A1 (en) * 2022-11-11 2024-05-16 Microsoft Technology Licensing, Llc Dynamic thread count optimizations
CN118051346B (zh) * 2024-04-11 2024-07-12 恒生电子股份有限公司 请求动态限流方法、装置、电子设备和可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004046923A1 (en) * 2002-11-20 2004-06-03 Nokia Corporation Concurrent operation of a state machine family
CN101599027A (zh) * 2009-06-30 2009-12-09 中兴通讯股份有限公司 一种线程池管理方法及其系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752031A (en) 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
US20020194251A1 (en) 2000-03-03 2002-12-19 Richter Roger K. Systems and methods for resource usage accounting in information management environments
WO2002050629A2 (en) * 2000-12-18 2002-06-27 Trevalon, Inc. An improved network server
US7249355B2 (en) 2002-12-18 2007-07-24 Microsoft Corporation Unified network thread management
US7363626B2 (en) * 2003-03-24 2008-04-22 Sun Microsystems, Inc. Thread level application partitioning
US7036008B2 (en) * 2003-04-17 2006-04-25 International Business Machines Corporation Autonomic determination of configuration settings by walking the configuration space
US20050081204A1 (en) * 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
US8943181B2 (en) * 2005-11-29 2015-01-27 Ebay Inc. Method and system for reducing connections to a database
US20090113440A1 (en) 2007-10-30 2009-04-30 Dorny Jared B Multiple Queue Resource Manager
US8381216B2 (en) * 2010-03-05 2013-02-19 Microsoft Corporation Dynamic thread pool management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004046923A1 (en) * 2002-11-20 2004-06-03 Nokia Corporation Concurrent operation of a state machine family
CN101599027A (zh) * 2009-06-30 2009-12-09 中兴通讯股份有限公司 一种线程池管理方法及其系统

Also Published As

Publication number Publication date
CN102147746A (zh) 2011-08-10
US8381216B2 (en) 2013-02-19
US20110219377A1 (en) 2011-09-08

Similar Documents

Publication Publication Date Title
CN102147746B (zh) 动态线程池管理系统及管理方法
CN108323200B (zh) 基于区块链的数据训练方法、装置、存储介质及区块链节点
CN108376079B (zh) 自动应用更新
CN108762931A (zh) 基于分布式调度系统的任务调度方法、服务器及存储介质
US9466036B1 (en) Automated reconfiguration of shared network resources
CN107395665A (zh) 一种区块链业务受理及业务共识方法及装置
CN107360206A (zh) 一种区块链共识方法、设备及系统
CN108111554B (zh) 一种访问队列的控制方法及装置
US20240070121A1 (en) Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging
CN104838360A (zh) 基于配额的资源管理
EP3357006A1 (en) Workflow service using state transfer
CN110457138A (zh) 游戏服务器集群的管理方法、装置及电子设备
CN103544153A (zh) 一种基于数据库的数据更新方法和系统
CN108334396A (zh) 一种数据处理方法和装置、资源组的创建方法和装置
CN108153590A (zh) 管理硬件资源
US10469616B2 (en) Data driven bin packing implementation for data centers with variable node capabilities
US11314712B2 (en) Method and apparatus for providing serial number, electronic device and readable storage medium
CN106385377B (zh) 一种信息处理方法和系统
CN114257551A (zh) 一种分布式限流的方法及系统、存储介质
US10884818B2 (en) Increasing processing capacity of virtual machines
US10884845B2 (en) Increasing processing capacity of processor cores during initial program load processing
CN109254835A (zh) 批处理任务的处理方法、装置、服务器及可读存储介质
CN109033814A (zh) 智能合约触发方法、装置、设备及存储介质
CN110569124A (zh) 一种任务分配方法和装置
CN115757611A (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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150515

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150515

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.