本发明属于网约车运营,具体涉及一种自动探测任务池忙碌程度的方法。
背景技术:
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秒执行一次。