System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及线程池自动化调整,尤其是涉及一种线程池动态自适应调整方法、系统、设备及存储介质。
技术介绍
1、线程池,从字面含义来看,是指管理一组同构工作线程的资源池。是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如mysql。线程池是与工作队列密切相关的,其中在工作队列中保存了所有等待执行的任务。工作者线程的任务很简单:从工作队列中获取一个任务,执行任务,然后返回线程池并等待下一个任务。
2、但是线程池过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。因此线程池的参数并不好配置。一方面线程池的运行机制不是很好理解,配置合理需要强依赖开发人员的个人经验和知识;另一方面,线程池执行的情况和任务类型相关性较大,io密集型和cpu密集型的任务运行起来的情况差异非常大,这导致业界并没有一些成熟的经验策略帮助开发人员参考。
技术实现思路
1、本专利技术旨在至少解决现有技术中存在的技术问题之一。为此,本专利技术提出一种线程池动态自适应调整方法、系统、设备及存储介质,能够动态调整线程池参数并监控动态调整后任务情况和线程池状态,避免了处理任务时创建销毁线程开销的代价,并避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。
2、第一方面,本专利技术的实施例提供了一种线程池动态自适应调整方法,包括:
3、封装第一线程池,并监听所述第一线程池的外部消息;
4、获取所述第一线程池的第一
5、根据所述外部消息动态修改所述第二配置参数,得到第二线程池;
6、获取所述第二线程池的运行状态,并将所述运行状态的运行参数与预设的运行阈值进行对比,得到告警信息;
7、通过所述告警信息控制所述第二线程池的线程进程。
8、根据本专利技术实施例的方法,至少具有如下有益效果:
9、本方法首先通过封装线程池,在线程池留有高扩展性的基础上实现了一定的分区管理,能够缓解一定的过分调度问题,并且通过监听第一线程池的外部消息,能够收集到封装线程池外的消息,为动态修改配置参数提供参考数据;其次通过分配策略简化配置参数,能够满足觉得大多数业务需求,降低线程池配置的困难度并提高线程池配置的效率;然后根据外部消息动态修改第二配置参数,能够避免频繁建立和销毁线程池,解决了配置参数修改成本高的问题,同时也避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用;最后通过运行状态的运行参数与预设的运行阈值进行对比,得到告警信息,并通过告警信息控制第二线程池的线程进程,为动态修改后的第二线程池提供了监控能力,避免了线程池修改后出现线程负载过高的问题。
10、根据本专利技术的一些实施例,所述根据所述第一线程池的分配策略简化所述第一配置参数得到第二配置参数,包括:
11、将所述分配策略简化为并行执行子任务的第一子分配策略和并行执行大批次子任务的第二子分配策略;
12、根据所述第一子分配策略和所述第一子分配策略删除所述第一配置参数的不相关参数,得到所述第二配置参数。
13、根据本专利技术的一些实施例,所述根据所述外部消息动态修改所述第二配置参数,得到第二线程池,包括:
14、通过threadpoolexecutor的实例设置所述第一线程池的修改策略;
15、通过所述修改策略根据所述外部消息动态修改所述第二配置参数,得到第三配置参数;
16、通过所述第三配置参数覆盖所述第一线程池,得到所述第二线程池。
17、根据本专利技术的一些实施例,所述获取所述第二线程池的运行状态,包括:
18、对所述第二线程池的任务生命周期进行监测,得到任务状态;
19、结合所述任务状态和所述第二线程池的执行任务状态,计算得到所述运行状态。
20、根据本专利技术的一些实施例,所述将所述运行状态的运行参数与预设的运行阈值进行对比,得到告警信息,包括:
21、通过所述运行参数计算所述第二线程池对应的线程池活跃度和线程池负载数;
22、若所述线程池活跃度高于第一阈值或者所述线程池负载数高于第二阈值,得到所述告警信息。
23、根据本专利技术的一些实施例,在所述通过所述第三配置参数覆盖所述第一线程池,得到所述第二线程池之后,所述线程池动态自适应调整方法还包括:
24、通过操作日志实时记录所述第一线程池变化为所述第二线程池的修改记录。
25、根据本专利技术的一些实施例,在所述通过所述告警信息控制所述第二线程池的线程进程之后所述线程池动态自适应调整方法还包括:
26、通过可视化平台查看所述第二线程池的实时状态。
27、第二方面,本专利技术的实施例提供了一种线程池动态自适应调整系统,包括:
28、线程池封装模块,用于封装第一线程池,并监听所述第一线程池的外部消息;
29、配置参数简化模块,用于获取所述第一线程池的第一配置参数,并根据所述第一线程池的分配策略简化所述第一配置参数得到第二配置参数;
30、配置参数动态修改模块,用于根据所述外部消息动态修改所述第二配置参数,得到第二线程池;
31、告警模块,用于获取所述第二线程池的运行状态,并将所述运行状态的运行参数与预设的运行阈值进行对比,得到告警信息;
32、线程进程控制模块,用于通过所述告警信息控制所述第二线程池的线程进程。
33、第三方面,本专利技术的实施例提供了一种电子设备,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如第一方面所述的线程池动态自适应调整方法。
34、第四方面,本专利技术的实施例提供了一种计算机存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面所述的线程池动态自适应调整方法。
35、需要注意的是,本专利技术的第二方面至第四方面与现有技术之间的有益效果与第一方面的线程池动态自适应调整方法的有益效果相同,此处不再细述。
36、本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。
本文档来自技高网...【技术保护点】
1.一种线程池动态自适应调整方法,其特征在于,所述线程池动态自适应调整方法包括:
2.根据权利要求1所述的线程池动态自适应调整方法,其特征在于,所述根据所述第一线程池的分配策略简化所述第一配置参数得到第二配置参数,包括:
3.根据权利要求1所述的线程池动态自适应调整方法,其特征在于,所述根据所述外部消息动态修改所述第二配置参数,得到第二线程池,包括:
4.根据权利要求1所述的线程池动态自适应调整方法,其特征在于,所述获取所述第二线程池的运行状态,包括:
5.根据权利要求4所述的线程池动态自适应调整方法,其特征在于,所述将所述运行状态的运行参数与预设的运行阈值进行对比,得到告警信息,包括:
6.根据权利要求3所述的线程池动态自适应调整方法,其特征在于,在所述通过所述第三配置参数覆盖所述第一线程池,得到所述第二线程池之后,所述线程池动态自适应调整方法还包括:
7.根据权利要求1所述的线程池动态自适应调整方法,其特征在于,在所述通过所述告警信息控制所述第二线程池的线程进程之后所述线程池动态自适应调整方法还包括:
...【技术特征摘要】
1.一种线程池动态自适应调整方法,其特征在于,所述线程池动态自适应调整方法包括:
2.根据权利要求1所述的线程池动态自适应调整方法,其特征在于,所述根据所述第一线程池的分配策略简化所述第一配置参数得到第二配置参数,包括:
3.根据权利要求1所述的线程池动态自适应调整方法,其特征在于,所述根据所述外部消息动态修改所述第二配置参数,得到第二线程池,包括:
4.根据权利要求1所述的线程池动态自适应调整方法,其特征在于,所述获取所述第二线程池的运行状态,包括:
5.根据权利要求4所述的线程池动态自适应调整方法,其特征在于,所述将所述运行状态的运行参数与预设的运行阈值进行对比,得到告警信息,包括:
6.根据权利要求3所述的线程池动态自适应调整方法,其特征在于,在所述通过所述第三配置参数覆盖所述第一线程池,得到所述第二线程池之后...
【专利技术属性】
技术研发人员:李文轩,何熠,何玄,李隼,
申请(专利权)人:联通沃悦读科技文化有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。