线程池最优大小的估算方法实践

线程池的理想大小取决于被提交任务的类型以及所部署系统的特性。线程池应该避免设置的过大或过小,如果线程池过大,大量的线程将在相对很少的CPU和内存资源上发生竞争,这不仅会导致更高的内存使用量,而且还可能耗尽资源。如果线程池过小,那么将导致许多空闲处理器无法执行任务,降低了系统吞吐率。

要正确设置线程池的大小,必须分析计算环境、资源预算和任务特性。包括所部署系统的CPU个数、内存大小、任务类型(计算密集、IO密集等)。如果待处理任务行为特征差异较大,那应该考虑使用多个线程池,分别处理不同类任务。大致上来说,对于计算密集型任务线程池大小和CPU个数相近通常能实现最优利用率;对于IO密集型任务,由于线程不会一直执行,所以线程吃的规模应该更大。要正确设置线程池大小,需要估算出任务的等待时间(任务从提交到结束耗时)和处理时间(实际处理耗时)的比值。

要是处理器达到期望的使用率,线程池的最优大小等于:

线程池大小=CPU个数 * CPU期望利用率 * (1 + 任务等待时间 / 任务处理时间)

假设有一个定时解析大文件并存入数据库的任务,系统部署在8核服务器上,期望定时任务执行CPU占比约20%,任务平均等待时间为150ms,任务平均处理时间为50ms
线程池最优大小=8*0.2*(1+150/50)=3

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值