CN110633133A - 一种任务处理方法、装置及计算机可读存储介质 - Google Patents

一种任务处理方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN110633133A
CN110633133A CN201810646223.3A CN201810646223A CN110633133A CN 110633133 A CN110633133 A CN 110633133A CN 201810646223 A CN201810646223 A CN 201810646223A CN 110633133 A CN110633133 A CN 110633133A
Authority
CN
China
Prior art keywords
thread
processing
task
work
work task
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
CN201810646223.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.)
Jinzhuan Xinke Co Ltd
Original Assignee
ZTE 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 ZTE Corp filed Critical ZTE Corp
Priority to CN201810646223.3A priority Critical patent/CN110633133A/zh
Publication of CN110633133A publication Critical patent/CN110633133A/zh
Pending legal-status Critical Current

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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种任务处理方法,检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池;本发明还同时公开了一种任务处理装置及计算机可读存储介质。采用本发明的方案,能够从服务端保证系统的线程资源在工作任务高并发场景下不会长期被处理时间长的工作任务占用,从而提升系统可用性。

Description

一种任务处理方法、装置及计算机可读存储介质
技术领域
本发明实施例涉及数据库技术领域,涉及但不限于一种任务处理方法、装置及计算机可读存储介质。
背景技术
事务是数据库中特有的术语,是数据库中数据操作的基本单元,我们将数据库中执行时间长的事务称为长事务,长事务在执行过程中会长期占用数据库资源。
在业务上线初期时,会经常出现数据库资源在短期内迅速被消耗一空,导致整个业务系统无法对外提供服务,表现形式就是数据库的cpu使用率一直处在100%的工作状态,而用户无法访问系统,部分用户访问超时。此种情况最常见的场景是由于包含长事务的业务处在高并发状态下,长事务迅速并长时间占用数据库资源,使得后续的业务无法获取系统资源,进而导致系统崩溃。
因此,在实际业务系统中,都是尽量减少长事务的业务。而通常长事务产生的原因不外乎两种:一是结构化查询语言(Structured Query Language,SQL)语句没有经过优化,导致SQL语句处理效率低,例如,某个查询字段上没有加索引,导致事务处理时间变长;另外一种就是数据量太大,操作很复杂,业务语句已经无法优化,事务本身就需要长时间处理。上线前,虽然有测试、预演等流程来保证系统面对长事务高并发时系统可用,但这仍是上线初期最常见的重大问题之一,一旦发生此种现象,通常的快速解决方案就是停止业务服务,重启数据库。
目前针对这个问题,主要从两个方面来解决:
1.对事务内SQL语句进行优化,如在相关字段上增加索引等方式提升SQL的执行效率,减少事务执行时间,将长时间压缩成短时间。
2.拆分长事务语句,将一个长事务拆解成若干个短事务语句,通过业务逻辑将若干短事务语句关联起来。这样虽然一个大事务被拉长了,但至少保证系统会有工作资源给其他业务使用,不至于系统无法提供服务。而且由于现在数据库性能都不错,这样做数据库的性能并没有下降多少。
目前主流的解决方案基本都是这两种方法相结合的方式来减少长事务等工作任务的处理时间。但这些手段基本都是由业务端来保证,无法做到完全保证工作任务高并发场景下,处理时间长的工作任务不会长期占据系统工作资源。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种任务处理方法、装置及计算机可读存储介质,能够从服务端的角度提出一种任务处理方法来保证系统的线程资源在工作任务高并发场景下不会长期被处理时间长的工作任务占用,从而提升系统可用性。
为达到上述目的,本发明实施例的技术方案是这样实现的:
本发明提供了一种任务处理方法,所述方法包括:
检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;
确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;
通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池。
本发明还提供了一种任务处理装置,所述装置包括:检测模块、调度模块和第一处理模块;其中,
所述检测模块,用于检测第一线程处理工作任务的处理时间;
所述调度模块,用于确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;
所述第一处理模块,用于通过第二线程对所述工作任务进行处理。
本发明还提供了一种任务处理装置,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,所述处理器用于运行所述计算机程序时,执行上述方案中任一项所述任务处理方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述方案中任一项所述任务处理方法的步骤。
本发明实施例所提供的任务处理方法、装置及计算机可读存储介质,检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池。如此,能够从服务端的角度,保证系统的线程资源在工作任务高并发场景下不会长期被处理时间长的工作任务占用,从而提升系统可用性。
附图说明
图1为本发明实施一中的任务处理方法的实现流程示意图;
图2为本发明实施例二中的长事务任务处理模型架构图;
图3为本发明实施例三中的通用任务处理流程图;
图4为本发明实施例三中的筛选长事务任务处理流程图;
图5为本发明实施例三中的长事务任务处理流程图;
图6为本发明实施例三中的对工作任务进行处理流程图;
图7为本发明实施例四中任务处理装置的结构示意图一;
图8为本发明实施例四中任务处理装置的结构示意图二;
图9为本发明实施例五中任务处理装置的结构示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细的说明。
实施例一
图1为本发明实施例一中任务处理方法的实现流程示意图,如图1所示,该方法包括以下步骤:
步骤101:检测第一线程处理工作任务的处理时间;
所述第一线程属于第一线程池。
这里,第一线程池中存放第一线程,第一线程池中的第一线程用于对终端接收到的新的工作任务进行处理,比如:终端接收到的查询操作时,根据查询操作生成查询操作对应的用户查询数据的工作任务,并为工作任务分配第一线程池中的第一线程,通过第一线程处理对应的工作任务。其中,第一线程池可为通用线程池。
第一线程池中包括有多个第一线程,当第一线程处理工作任务时,第一线程处于忙状态;当第一线程未处理工作任务时,第一线程处于空闲状态。
在使用第一线程对工作任务处理时,检测第一线程池中是否存在空闲状态的第一线程,若第一线程池中存在空闲状态的第一线程,使用空闲状态的第一线程对工作任务进行处理,使用第一线程对工作任务处理完成后,将第一线程释放。
当第一线程处理工作任务时,根据第一线程处理工作任务所使用的时间检测第一线程处理工作任务的处理时间,这里,检测的方式可以为实时检测或定时检测。
比如:第一线程从5分9秒开始处理工作任务,当前时间为5分10秒,则第一线程处理工作任务的时间为1秒。
当第一线程从5分9秒开始处理优先级为1的工作任务1,当接收到优先级更高的工作任务2时,第一线程在5分15秒中断对优先级为1的工作任务1的处理,开始处理优先级更高的工作任务2,并从5分20秒开始继续处理优先级为1的工作任务1,到5分23秒时间为止,第一线程处理工作任务1的处理时间为9秒。
在一实施例中,所述方法还包括:确定所述第一线程处理所述工作任务的开始时间;相应地,所述检测第一线程处理工作任务的处理时间包括:根据所述开始时间检测所述第一线程处理工作任务的处理时间。
在检测第一线程处理工作任务的处理时间之前,确定第一线程处理工作任务的开始时间;根据开始时间与当前时间的时间差确定第一线程处理工作任务的处理时间。
比如:第一线程处理工作任务的开始时间为50秒40毫秒,当前时间为50分42毫秒,根据开始时间和当前时间的时间差可以确定第一线程处理工作任务的处理时间为2毫秒。
在实际应用中,使用第一线程池中的第一线程对工作任务进行处理时,会对第一线程开始处理工作任务的时间进行记录,根据记录的时间确定第一线程处理工作任务的开始时间。
在一实施例中,所述方法还包括:当所述第一线程对所述工作任务进行处理时,标记所述第一线程为忙状态;确定第一线程池中处于忙状态的线程的数量;相应地,所述检测第一线程处理工作任务的处理时间包括:当处于忙状态的线程的数量超过设定的第二阈值时,检测第一线程处理工作任务的处理时间。
第一线程对工作任务进行处理时,将第一线程标记为忙状态,检测第一线程池中的线程的状态,确定第一线程池中处于忙状态的线程的数量,当第一线程池中处于忙状态的线程的数量超过设定的第二阈值时,第一线程池进入忙工作模式,在忙工作模式下,启动对第一线程池中的第一线程的处理时间的检测。
这里,设定的第二阈值可为具体的数量或比例,以根据处于忙状态的第一线程的数量或处于忙状态的第一线程在第一线程池中的第一线程的比例确定忙状态的线程的数量是否超过设定的第二阈值。当设定的第二阈值为具体的数量时,可为40、50等。当设定的第二阈值为比例时,可为80%等。
当设定的第二阈值为比例时,将忙状态的线程占第一线程池中全部线程的比率和设定的第二阈值进行比较,确定忙状态的线程占第一线程池中全部线程的比率大于设定的第二阈值时,检测第一线程处理工作任务的处理时间。
这里,检测检测第一线程处理工作任务的处理时间时,分别检测各第一线程处理对应的工作任务的处理时间。
步骤102:确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;
确定第一线程处理工作任务的处理时间后,将处理时间与第一阈值进行比较,当确定处理时间大于设定的第一阈值,则确定当前处理的工作任务为长工作任务。这里,长工作任务为处理时间超过设定的第一阈值的工作任务。
若检测确定一第一线程处理的工作任务为长工作任务时,触发第一线程停止对工作任务进行处理。
比如:同上例,检测得到第一线程处理工作任务1的处理时间为2毫秒,第一阈值为1毫秒,此时,处理时间大于第一阈值时,则确定工作任务1为长工作任务,触发第一线程停止对工作任务进行处理。
这里,当触发第一线程停止对工作任务的处理时,对当前工作任务的工作状态进行记录,以便后续使用工作任务的工作状态继续对工作任务进行处理。
在一实施例中,所述方法还包括:将所述工作任务从第一任务队列调整至第二任务队列;所述第一任务队列中的工作任务通过所述第一线程池中的线程进行处理,所述第二任务队列中的工作任务通过所述第二线程池中的线程进行处理。
当确定一第一线程处理工作任务的处理时间大于设定的第一阈值,触发第一线程停止对工作任务进行处理后,将工作任务从第一任务队列调整至第二任务队列,检测第二线程池中是否有空闲状态的第二线程存在,若存在空闲状态的第二线程,使用第二线程对工作任务进行处理,在使用第二线程对工作任务处理完毕后,将第二线程标记为空闲状态,进行释放。
这里,第一任务队列对应于第一线程池,第一任务队列中的工作任务使用第一线程池中的线程进行处理;第二任务队列对应于第二线程池,第二任务队列中的工作任务使用第二线程池中的线程进行处理;其中,第一任务队列可为通用任务队列;第二任务队列可为长事务任务队列。
在一实施例中,所述触发所述第一线程停止对所述工作任务进行处理之后,所述方法还包括:将所述第一线程的状态设置为空闲状态。
在触发第一线程停止对工作任务进行处理之后,将第一线程的状态设置为空闲状态,将第一线程释放,可以使用空闲状态的第一线程对工作任务进行处理。
步骤103:通过第二线程对所述工作任务进行处理;
所述第二线程属于第二线程池。
这里,第二线程池不同于第一线程池,第二线程池中存放第二线程,第二线程池用于对处理时间长大于第一阈值的长工作任务进行处理。其中,第二线程池可为长事务线程池。
第二线程池中存放有多个线程,每个线程包含两种状态:忙状态和空闲状态;当使用线程对处理时间长的工作任务进行处理时,线程处于忙状态;没有被处理时间长的工作任务使用的线程处于空闲状态。
这里,通过第二线程对工作任务进行处理可为:通过第二线程对工作任务重新进行处理;也可为根据保存的工作任务的工作状态通过第二线程继续对工作任务进行处理。
在一实施例中,所述通过第二线程对所述工作任务进行处理包括:检测所述第二线程池中是否存在空闲状态的第二线程;在所述第二线程池中存在空闲状态的第二线程时,通过所述空闲状态的第二线程对所述工作任务进行处理。
检测第二线程池中是否存在空闲状态的第二线程,若第二线程池中存在空闲状态的第二线程,使用空闲状态的第二线程对工作任务进行处理,使用第二线程对工作任务处理完成后,将第二线程释放。
若第二线程池中不存在空闲状态的第二线程,则监控第二线程池直至第二线程池中存在空闲状态的第二线程。
在一实施例中,所述方法还包括:确定所述工作任务的工作状态;相应地,所述通过第二线程对所述工作任务进行处理,包括:控制所述第二线程根据所述工作状态对所述工作任务进行处理。
在确定第一线程处理工作任务的处理时间大于预设的第一阈值时,确定所处理的工作任务的长工作任务,触发第一线程停止对工作任务进行处理,并记录当前的工作任务的工作状态;当通过第二线程池中的第二线程对工作任务进行处理时,第二线程根据工作任务的工作状态继续对工作任务进行处理。
这里,工作任务的工作状态可为任务进度等表征工作任务的处理状态的信息。
比如:在触发第一线程停止对工作任务进行处理后,根据工作任务的任务进度确定工作任务的工作状态为30%,在第二线程池中存在空闲状态的第二线程,根据工作状态的工作任务为30%,使用第二线程继续对剩余的70%进行处理。
在本发明实施例中,检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池,如此,从服务端的角度,保证系统的线程资源在工作任务高并发场景下不会长期被处理时间长的工作任务占用,从而提升系统可用性。
实施例二
本实施例通过包括客户端与数据服务端的数据处理系统中事务处理的具体场景对本发明实施例提供的任务处理方法进行说明。这里,工作任务对应事务,长工作任务对应长事务,工作线程对应线程。
本发明实施例中工作任务处理的方法在长事务任务处理模型中实现,长事务任务处理模型的基本架构如图2所示,客户端client与数据库服务端DB server建立连接,DBserver包括:
通用任务队列201:用于存放新创建的工作任务。
当客户端与数据库服务端建立连接后,数据库服务端的数据库系统会为该连接创建一个通用工作任务放入到通用任务队列中,等待数据库服务端的通用任务调度器分配工作线程来执行工作任务。
通用工作线程池202:为通用任务提供通用工作线程(第一线程)。
当工作任务执行完毕后,数据库服务端将通用工作线程会释放回通用工作线程池中。同时轮询处于忙状态的通用工作线程,一旦超过忙线程比率,则会进入忙工作模式,此时通用工作线程池会将超过时间阈值的通用工作线程的工作现场保存下来,释放掉通用工作线程,并将工作任务放入长事务任务队列。这里,将通用工作线程处理的工作任务可称为通用工作任务。
通用任务调度器203:定时检查通用任务队列。
当通用任务队列中有新任务时,通用任务调度器就会去通用工作线程池中取出一个通用工作线程,用于执行通用工作任务。
长事务队列204:用于存放执行时间超过预定义时间的工作任务即长事务。
长事务任务调度器205:定时检查长事务队列。
当长事务任务队列中有长事务时,长事务任务调度器将从长事务工作线程池中取出一个空闲的长事务工作线程,来执行长事务。
长事务工作线程池206:为长事务任务提供长事务工作线程。
当长事务执行完毕后,长事务工作线程会被释放回长事务工作线程池中。
本发明实施例中图2所示的长事务任务处理模型的工作任务处理方法包括以下步骤:
第一步,客户端和数据库服务端建立连接后,数据库接收到客户端的连接,此时系统就会为该连接创建一个通用工作任务,放入通用任务队列中。
第二步,通用任务调度器会检查通用任务队列,如果有通用工作任务则会去检查通用工作线程池中是否有空闲线程,如果有空闲线程则从通用线程池中取空闲线程,来执行通用工作任务。如果没有则会等待空闲线程。
第三步,通用工作线程执行通用工作任务。
第四步,通用线程池会对处于忙状态的通用工作线程进行监控,一旦忙状态的通用工作线程的数量达到某一比值时,就会进入忙工作模式。
第五步,进入忙工作模式,就会启动长事务筛选检查通用工作线程的执行时间。一旦通用工作线程的执行时间超过规定的执行时间,则会将保存工作现场,释放通用工作线程,将对应的工作任务作为长事务调入长事务队列。
第六步,长事务任务调度器会检查长事务队列,如果有长事务则会去检查长事务工作线程池中是否有空闲的长事务工作线程,如果有空闲的长事务工作线程则从长事务线程池中取出空闲的长事务工作线程,执行长事务。如果没有空闲的长事务工作线程,则等待空闲的长事务工作线程。
第七步,长事务工作线程会执行长事务,直到执行完毕。然后将长事务工作线程归还到长事务工作线程池中。
上述工作任务处理方法中,通过比较工作任务的执行时间识别长事务,然后将长事务作为工作任务放入一个等待队列(长事务队列)中,并释放掉原来的工作线程;同时增加专职工作线程来继续处理长事务。通过长事务由专职线程来处理。
本发明实施例提供的工作任务处理方法能够在面对长事务高并发场景时,数据库的工作资源不会迅速被侵占,依旧能够获取数据库系统资源,进而保证了系统的可用性,提升系统的可用性。从而对数据库在金融领域、互联网领域、教育领域等的推广,起到很好的推进作用。
实施例三
本发明实施例对工作任务处理方法进行进一步描述。
本发明实施例的工作任务处理方法中第一线程处理工作任务的方法包括:通用任务处理流程图如图3所示,流程说明如下:
步骤301:当客户端与数据库建立连接后,系统会为该连接创建一个通用工作任务,并放入到通用任务队列中。
步骤302:通用任务调度器会定期检查通用任务队列,看是否有新的通用工作任务需要执行。
步骤303:如果有新的通用工作任务,调度器会检查通用工作线程池是否有空闲的通用工作线程。
步骤304:如果有空闲的通用工作线程则记录该线程id并标记时间。
步骤305:将工作任务交给该通用工作线程执行。
本发明实施例的工作任务处理方法中检测长工作任务的方法包括:筛选长事务任务处理流程图如图4所示,流程说明如下:
步骤401:通用工作线程池会定时发起任务,轮询线程池中处于忙状态的通用工作线程。
步骤402:当忙状态的通用工作线程数量达到总线程的一定比值时,会进入忙工作模式。
步骤403:比对通用工作线程已执行的时间,记录超过阈值的线程号。
步骤404:暂停该通用工作线程,保存该通用工作线程工作现场以及状态变量。
步骤405:将该通用工作线程执行的通用工作任务放入长事务队列中。
步骤406:释放该通用工作线程。
本发明实施例的工作任务处理方法中第二线程处理长工作任务的方法包括:长事务任务处理流程图如图5所示,流程说明如下:
步骤501:长事务调度器会定期检查长事务任务队列,看是否有新的长事务需要执行。
步骤502:如果有新的长事务,长事务调度器会检查长事务工作线程池是否有空闲的长事务工作线程。
步骤503:如果有空闲的长事务工作线程则将该长事务交给该长事务工作线程执行,该长事务工作线程会根据之前的工作状态继续执行工作任务;如果没有则等待直到有空闲的长事务工作线程。
本发明实施例的对工作任务进行处理的步骤如图6所示:
步骤601:mysqld主线程监听数据库连接端口,当有客户端与服务端建立连接时,mysqld主线程就会创建一个工作任务,把工作任务放入通用任务队列中。
步骤602:通用任务调度器会检查通用任务队列,确定通用任务队列中是否有通用任务。
步骤603:如果有通用任务则会去检查通用工作线程池中是否有空闲的通用线程,如果有空闲的通用线程则从通用线程池中取空闲的通用线程,执行工作任务,如果没有则会等待空闲的通用线程。
步骤604:通用线程池会对处于忙状态的通用线程进行监控,一旦忙状态的通用线程的数量与线程总数量的比值超过规定值时,就会进入忙工作模式,此时通用线程池会把执行时间超过阈值的工作线程的现场环境保存下来,同时将对应的工作任务调入长事务任务队列,然后释放通用线程。
步骤605:长事务任务调度器会检查长事务队列,如果有长事务则会去检查长事务工作线程池中是否有空闲线程,如果有长空闲线程则从长事务工作线程池中取空闲的长事务工作线程,执行长事务任务。如果没有空闲的长事务工作线程则等待空闲的长事务工作线程。
步骤606:长事务工作线程会根据之前的状态变量,继续执行长事务,直到长事务执行完毕,然后将长事务工作线程归还到长事务工作线程池中。
综上所述,本发明的技术效果在于:通过比较执行时间筛选出长事务,并通过增加一类工作线程专职处理长事务,达到释放通用工作线程,使得在大事务高并发场景下,数据库的工作资源不会迅速被大事务占据,提升数据库系统的可用性。需要说明的是,本实施例的任务队列和线程池可以集成为同一个组件,也可以两个组件。
实施例四
本实施例提供一种任务处理装置,如图7所示,任务处理装置70包括:检测模块701、调度模块702、第一处理模块703;其中,
检测模块701,用于检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;
调度模块702,用于确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;
处理模块703,用于通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池。
在一实施例中,如图8所示,装置70还包括:第一确定模块704,用于确定所述第一线程处理所述工作任务的开始时间;相应地,检测模块701具体用于:根据所述开始时间检测所述第一线程处理工作任务的处理时间。
在一实施例中,如图8所示,装置70还包括:第二确定模块705,用于当所述第一线程对所述工作任务进行处理时,标记所述第一线程为忙状态;确定第一线程池中处于忙状态的线程的数量;相应地,检测模块701具体用于:当处于忙状态的线程的数量超过设定的第二阈值时,检测第一线程处理工作任务的处理时间。
在一实施例中,第一处理模块703还用于:检测所述第二线程池中是否存在空闲状态的第二线程;在所述第二线程池中存在空闲状态的第二线程时,通过所述空闲状态的第二线程对所述工作任务进行处理。
在一实施例中,如图8所示,装置70还包括:第三确定模块706,用于确定所述工作任务的工作状态;相应地,处理模块703具体用于:控制所述第二线程根据所述工作状态对所述工作任务进行处理。
在一实施例中,如图8所示,装置70还包括:调整模块707,用于将所述工作任务从第一任务队列调整至第二任务队列;所述第一任务队列中的工作任务通过所述第一线程池中的线程进行处理,所述第二任务队列中的工作任务通过所述第二线程池中的线程进行处理。
在一实施例中,如图8所示,装置70还包括:设置模块708,用于将所述第一线程的状态设置为空闲状态。
通过本发明实施例的任务处理装置,能够从服务端的角度,保证系统的线程资源在工作任务高并发场景下不会处理时间长的工作任务占用,从而提升系统可用性。
实施例五
基于前述的实施例,本发明实施例提供一种任务处理装置,如图9所示,所述装置包括处理器902和用于存储能够在处理器902上运行的计算机程序的存储器901;其中,所述处理器902用于运行所述计算机程序时,以实现:
检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;
确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;
通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池。
上述本发明实施例揭示的方法可以应用于所述处理器902中,或者由所述处理器902实现。所述处理器902可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过所述处理器902中的硬件的集成逻辑电路或者软件形式的指令完成。上述的所述处理器902可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。所述处理器902可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器901,所述处理器902读取存储器901中的信息,结合其硬件完成前述方法的步骤。
可以理解,本发明实施例的存储器(存储器801)可以是易失性存储器或者非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-OnlyMemory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-OnlyMemory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-OnlyMemory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random AccessMemory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random AccessMemory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
这里需要指出的是:以上终端实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果,因此不做赘述。对于本发明终端实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解,为节约篇幅,这里不再赘述。
实施例六
在示例性实施例中,本发明实施例还提供了一种计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器901,上述计算机程序可由处理器902处理,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器处理时实现:
检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;
确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;
通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池。
这里需要指出的是:以上计算机介质实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果,因此不做赘述。对于本发明终端实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解,为节约篇幅,这里不再赘述。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (10)

1.一种任务处理方法,其特征在于,所述方法包括:
检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;
确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;
通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述第一线程处理所述工作任务的开始时间;
相应地,所述检测第一线程处理工作任务的处理时间包括:
根据所述开始时间检测所述第一线程处理工作任务的处理时间。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一线程对所述工作任务进行处理时,标记所述第一线程为忙状态;
确定第一线程池中处于忙状态的线程的数量;
相应地,所述检测第一线程处理工作任务的处理时间包括:
当处于忙状态的线程的数量超过设定的第二阈值时,检测第一线程处理工作任务的处理时间。
4.根据权利要求1所述的方法,其特征在于,所述通过第二线程对所述工作任务进行处理包括:
检测所述第二线程池中是否存在空闲状态的第二线程;
在所述第二线程池中存在空闲状态的第二线程时,通过所述空闲状态的第二线程对所述工作任务进行处理。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述工作任务的工作状态;
相应地,所述通过第二线程对所述工作任务进行处理,包括:
控制所述第二线程根据所述工作状态对所述工作任务进行处理。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述工作任务从第一任务队列调整至第二任务队列;所述第一任务队列中的工作任务通过所述第一线程池中的线程进行处理,所述第二任务队列中的工作任务通过所述第二线程池中的线程进行处理。
7.根据权利要求1所述的方法,其特征在于,所述触发所述第一线程停止对所述工作任务进行处理之后,所述方法还包括:
将所述第一线程的状态设置为空闲状态。
8.一种任务处理装置,其特征在于,所述装置包括:检测模块、调度模块和第一处理模块;其中,
所述检测模块,用于检测第一线程处理工作任务的处理时间,所述第一线程属于第一线程池;
所述调度模块,用于确定所述处理时间大于设定的第一阈值,触发所述第一线程停止对所述工作任务进行处理;
所述第一处理模块,用于通过第二线程对所述工作任务进行处理,所述第二线程属于第二线程池。
9.一种任务处理装置,其特征在于,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,所述处理器用于运行所述计算机程序时,执行权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
CN201810646223.3A 2018-06-21 2018-06-21 一种任务处理方法、装置及计算机可读存储介质 Pending CN110633133A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810646223.3A CN110633133A (zh) 2018-06-21 2018-06-21 一种任务处理方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810646223.3A CN110633133A (zh) 2018-06-21 2018-06-21 一种任务处理方法、装置及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN110633133A true CN110633133A (zh) 2019-12-31

Family

ID=68966417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810646223.3A Pending CN110633133A (zh) 2018-06-21 2018-06-21 一种任务处理方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110633133A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338787A (zh) * 2020-02-04 2020-06-26 浙江大华技术股份有限公司 一种数据处理方法及装置、存储介质、电子装置
CN111427674A (zh) * 2020-03-19 2020-07-17 成都云盯科技有限公司 一种微服务管理方法、装置及系统
CN112231114A (zh) * 2020-09-22 2021-01-15 深圳云天励飞技术股份有限公司 一种事件处理方法及相关设备
CN113059562A (zh) * 2021-03-22 2021-07-02 深圳市注能科技有限公司 机器人及线程的调节方法、同步方法
CN116185582A (zh) * 2022-12-29 2023-05-30 国科础石(重庆)软件有限公司 多核调度的方法、装置、车辆、电子设备及介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051330B1 (en) * 2000-11-21 2006-05-23 Microsoft Corporation Generic application server and method of operation therefor
US20100146516A1 (en) * 2007-01-30 2010-06-10 Alibaba Group Holding Limited Distributed Task System and Distributed Task Management Method
CN102043675A (zh) * 2010-12-06 2011-05-04 北京华证普惠信息股份有限公司 一种基于任务处理请求任务量大小的线程池管理方法
CN103970592A (zh) * 2013-01-25 2014-08-06 深圳市金证科技股份有限公司 交易中间件的单线程多任务处理方法及服务器
CN104838359A (zh) * 2012-08-16 2015-08-12 微软技术许可有限责任公司 等待时间敏感的软件中断和线程调度
CN105700937A (zh) * 2016-01-04 2016-06-22 北京百度网讯科技有限公司 多线程任务处理方法和装置
CN105760234A (zh) * 2016-03-17 2016-07-13 联动优势科技有限公司 一种线程池管理方法及装置
CN105912386A (zh) * 2016-05-03 2016-08-31 深圳市永兴元科技有限公司 线程管理方法及系统
US20160350157A1 (en) * 2015-05-29 2016-12-01 Red Hat, Inc. Dynamic thread pool management
CN107291547A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种任务调度处理方法、装置及系统
CN107357640A (zh) * 2017-06-30 2017-11-17 北京奇虎科技有限公司 多线程数据库的请求处理方法及装置、电子设备
CN107463439A (zh) * 2017-08-21 2017-12-12 山东浪潮通软信息科技有限公司 一种线程池实现方法及装置
CN107689979A (zh) * 2017-04-26 2018-02-13 平安科技(深圳)有限公司 一种下载请求处理方法和处理设备
CN107832146A (zh) * 2017-10-27 2018-03-23 北京计算机技术及应用研究所 高可用集群系统中的线程池任务处理方法

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051330B1 (en) * 2000-11-21 2006-05-23 Microsoft Corporation Generic application server and method of operation therefor
US20100146516A1 (en) * 2007-01-30 2010-06-10 Alibaba Group Holding Limited Distributed Task System and Distributed Task Management Method
CN102043675A (zh) * 2010-12-06 2011-05-04 北京华证普惠信息股份有限公司 一种基于任务处理请求任务量大小的线程池管理方法
CN104838359A (zh) * 2012-08-16 2015-08-12 微软技术许可有限责任公司 等待时间敏感的软件中断和线程调度
CN103970592A (zh) * 2013-01-25 2014-08-06 深圳市金证科技股份有限公司 交易中间件的单线程多任务处理方法及服务器
US20160350157A1 (en) * 2015-05-29 2016-12-01 Red Hat, Inc. Dynamic thread pool management
CN105700937A (zh) * 2016-01-04 2016-06-22 北京百度网讯科技有限公司 多线程任务处理方法和装置
CN105760234A (zh) * 2016-03-17 2016-07-13 联动优势科技有限公司 一种线程池管理方法及装置
CN107291547A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种任务调度处理方法、装置及系统
CN105912386A (zh) * 2016-05-03 2016-08-31 深圳市永兴元科技有限公司 线程管理方法及系统
CN107689979A (zh) * 2017-04-26 2018-02-13 平安科技(深圳)有限公司 一种下载请求处理方法和处理设备
CN107357640A (zh) * 2017-06-30 2017-11-17 北京奇虎科技有限公司 多线程数据库的请求处理方法及装置、电子设备
CN107463439A (zh) * 2017-08-21 2017-12-12 山东浪潮通软信息科技有限公司 一种线程池实现方法及装置
CN107832146A (zh) * 2017-10-27 2018-03-23 北京计算机技术及应用研究所 高可用集群系统中的线程池任务处理方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
张垠波;: "线程池技术在并发服务器中的应用", 计算机与数字工程, no. 07 *
张珏璐;徐国治;: "线程池技术在J2ME网络通信中的应用研究", 微计算机信息, no. 27 *
李东晖;肖和平;贺小川;郭长国;: "实时中间件中高性能线程池的研究与实现", 湖南农业大学学报(自然科学版), no. 03 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338787A (zh) * 2020-02-04 2020-06-26 浙江大华技术股份有限公司 一种数据处理方法及装置、存储介质、电子装置
CN111338787B (zh) * 2020-02-04 2023-09-01 浙江大华技术股份有限公司 一种数据处理方法及装置、存储介质、电子装置
CN111427674A (zh) * 2020-03-19 2020-07-17 成都云盯科技有限公司 一种微服务管理方法、装置及系统
CN112231114A (zh) * 2020-09-22 2021-01-15 深圳云天励飞技术股份有限公司 一种事件处理方法及相关设备
CN113059562A (zh) * 2021-03-22 2021-07-02 深圳市注能科技有限公司 机器人及线程的调节方法、同步方法
CN116185582A (zh) * 2022-12-29 2023-05-30 国科础石(重庆)软件有限公司 多核调度的方法、装置、车辆、电子设备及介质
CN116185582B (zh) * 2022-12-29 2024-03-01 国科础石(重庆)软件有限公司 多核调度的方法、装置、车辆、电子设备及介质

Similar Documents

Publication Publication Date Title
CN110633133A (zh) 一种任务处理方法、装置及计算机可读存储介质
US8046768B2 (en) Apparatus and method for detecting resource consumption and preventing workload starvation
TWI235952B (en) Thread dispatch mechanism and method for multiprocessor computer systems
US9021485B2 (en) Automatically restarting a first child process based on presence of SQL code in a list
US20030037290A1 (en) Methods and apparatus for managing defunct processes
CN109471711B (zh) 一种任务处理的方法及装置
US20170032000A1 (en) Database manager
US20220113959A1 (en) Action execution based on management controller action request
US9170837B2 (en) Transaction concurrent execution control system, method and program for carrying out a control of concurrently executing a transaction, including measuring execution time from starting to ending of transaction execution
US7543273B2 (en) Systems and methods for dynamic control of cache and pool sizes using a batch scheduler
US7284091B2 (en) Systems and methods for passivation of cached objects in transaction
CN113157411A (zh) 一种基于Celery的可靠可配置任务系统及装置
US7756910B2 (en) Systems and methods for cache and pool initialization on demand
US11500799B2 (en) Managing access to a CPU on behalf of a block application and a non-block application
CN107193857B (zh) 一种用于数据库遍历的方法与设备
Zhou et al. Selective early request termination for busy internet services
CN111176869B (zh) 超时检测方法、装置、设备及存储介质
CN110851421B (zh) 减少数据迁移耗时的方法、装置、存储介质及电子设备
CN112925807A (zh) 面向数据库的请求的批处理方法、装置、设备及存储介质
CN108920722B (zh) 一种参数配置的方法、装置及计算机存储介质
US8881156B2 (en) Apportioning summarized metrics based on unsummarized metrics in a computing system
US9489235B2 (en) Request processing system, method and program product
US11625400B2 (en) Optimal query scheduling for resource utilization optimization
Chang et al. Luc: Limiting the unintended consequences of power scaling on parallel transaction-oriented workloads
WO2021114549A1 (zh) 一种指令执行方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220107

Address after: 100176 602, floor 6, building 6, courtyard 10, KEGU 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing (Yizhuang group, high-end industrial area of Beijing Pilot Free Trade Zone)

Applicant after: Jinzhuan Xinke Co.,Ltd.

Address before: 518057 Ministry of justice, Zhongxing building, South Science and technology road, Nanshan District hi tech Industrial Park, Shenzhen, Guangdong

Applicant before: ZTE Corp.