一种自动探测任务池忙碌程度的方法与流程

文档序号:36007315发布日期:2023-11-16 22:52阅读:25来源:国知局
一种自动探测任务池忙碌程度的方法与流程

本发明属于网约车运营,具体涉及一种自动探测任务池忙碌程度的方法。


背景技术:

1、异步指的是让原本串行执行的几步逻辑,分开并行执行。举例说明:某个完整的业务流程原来按照a、b、c的顺序串行执行,abc这3个步骤分别需要100毫秒,50毫秒,210毫秒,则完成完整的业务流程总共需要360毫秒;异步优化后,a、b、c这3个步骤同时执行(并行执行),完成完整的业务流程只需要210毫秒(取决于abc步骤中,最长的步骤c用时)。异步的优势有助于提高服务接口的处理速度;

2、以上示例中,把a、b、c这3个步骤分开执行的方式就是把a、b、c这3个逻辑执行代码块作为3个单独的任务提交到任务池中。任务池中有很多线程,每个线程独立、不断地执行任务。任务池通常有3个核心的参数:核心线程数、最大线程数、任务队列,以下分别说明这3个参数。核心线程数:任何时刻,任务池都保留有这些数量的线程;最大线程数:任务池所能持有的最多线程数;任务队列:任务太多又达到了最大线程数时,新放入的任务将存储到任务队列里,当线程执行完一个单独的任务后,会主动从任务队列中获取新的任务执行;系统中往往存在好几个任务池,任务池中的任务类型和来源并不确定。如果任务池一直处于很忙碌的状态,新的任务就得不到及时执行,这样以来,将任务异步执行的意义就不大了;如果任务池中的线程大多数都处于空闲状态,则说明任务池占用的硬件资源过多,有些浪费资源。因此如何能近乎实时地知道每个任务池的忙碌状态,为优化任务池的以上3个参数提供数据参考,成为需解决的问题。


技术实现思路

1、本发明的目的在于提供一种自动探测任务池忙碌程度的方法,以解决上述背景技术中提出的问题。

2、为实现上述目的,本发明提供如下技术方案:一种自动探测任务池忙碌程度的方法,具体步骤包括:s1:系统启动时,启动一个线程;

3、s2:将启动的线程设置为后台服务线程;

4、s3:为该线程设定一个名称;

5、s4:设定线程的执行频率;

6、s5:从配置中读取需监控的任务池集合;

7、s6:遍历任务池集合,逐一处理各任务池;

8、s7:获取任务池的活跃线程数;

9、s8:获取任务池的最大线程数;

10、s9:用活跃线程数乘以100,再除以最大线程数,得到线程使用率;

11、s10:获取任务池当前已使用的任务队列长度;

12、s11:获取任务池任务队列的总长度;

13、s12:用当前已使用的任务队列长度乘以100,除以任务队列的总长度,得到任务队列使用率;

14、s13:获取系统当前时间;

15、s14:获取任务池的名称;

16、s15:调用es的保存接口,将步骤s9的线程使用率和步骤s12的任务队列使用率,任务池名称以及系统当前时间作为监控数据保存;

17、s16:继续处理下一个任务池;

18、s17:结束。

19、优选的,步骤s2中,将启动的线程设置为后台服务线程的目的是当系统关闭后,该后台线程会自动关闭。

20、优选的,步骤s3中,设定名称是可以方便区分该线程,以此判定线程的用途。

21、优选的,步骤s5中,配置项示例如下:

22、need_mon_threadpool_names:a_pool,b_pool,c_pool。

23、优选的,步骤s4中,设定线程的执行频率为10秒执行一次。

24、与现有技术相比,本发明的有益效果是:本发明是一种能够自动报告系统中各任务池忙碌状态的一种方法,通过单独的一个后台线程,每间隔10秒从各任务池中获取感兴趣的各项数据,最终统计出各任务池的线程使用率、任务队列使用率等数据;当线程使用率很高或者任务队列使用率很高时,说明任务池很忙碌;相反,当线程使用率较低或任务队列使用率较低时说明任务池较空闲;并将这些数据记录到es集群,技术人员可查询es集群中的数据,最终了解各任务池的忙碌状态,为优化任务池参数提供数据支撑;最终更合理利用硬件资源。



技术特征:

1.一种自动探测任务池忙碌程度的方法,其特征在于:具体步骤包括:

2.根据权利要求1所述的一种自动探测任务池忙碌程度的方法,其特征在于:步骤s2中,将启动的线程设置为后台服务线程的目的是当系统关闭后,该后台线程会自动关闭。

3.根据权利要求1所述的一种自动探测任务池忙碌程度的方法,其特征在于:步骤s3中,设定名称是可以方便区分该线程,以此判定线程的用途。

4.根据权利要求1所述的一种自动探测任务池忙碌程度的方法,其特征在于:步骤s5中,配置项示例如下:

5.根据权利要求1所述的一种自动探测任务池忙碌程度的方法,其特征在于:步骤s4中,设定线程的执行频率为10秒执行一次。


技术总结
本发明公开了一种自动探测任务池忙碌程度的方法,系统启动时,启动一个线程;将启动的线程设置为后台服务线程;为该线程设定一个名称;设定线程的执行频率;从配置中读取需监控的任务池集合;遍历任务池集合,逐一处理各任务池;获取任务池的活跃线程数;获取任务池的最大线程数;用活跃线程数乘以100,再除以最大线程数,得到线程使用率;本发明通过单独的一个后台线程,每间隔10秒从各任务池中获取感兴趣的各项数据,最终统计出各任务池的线程使用率、任务队列使用率等数据;并将这些数据记录到ES集群,技术人员可查询ES集群中的数据,最终了解各任务池的忙碌状态,为优化任务池参数提供数据支撑;最终更合理利用硬件资源。

技术研发人员:赵东辉
受保护的技术使用者:首约科技(北京)有限公司
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1