首页 新闻 搜索 专区 学院

Spring Boot项目的线程池,建立多少个合适呢?

0
悬赏园豆:20 [已解决问题] 解决于 2020-07-13 17:42

Spring Boot项目的线程池应该怎么配置?合适的参数,就是 ThreadPoolTaskExecutor 的参数。

核心线程数量、最大线程数量、排队数量、其它——比如拒绝策略。

线程数量 的设置 和 JVM的内存 设置有关系吧?比如,JVM内存为 16MB,线程数量应该不会太大,否则会爆掉吧。
之前做了此简单的测试,新建了2万多个线程JVM就死掉了,JVM内存配置了十几个MB。

要是JVM配置 512MB、1GB,或许,线程数量可以达到 万级、十万级?此时,线程切换会不会耗费大量资源呢?是否又和 电脑的CPU核心数量 有关系了?

期待一个 综合性的回复(最佳实践啦),谢谢!

工程师二号的主页 工程师二号 | 小虾三级 | 园豆:567
提问于:2020-07-13 14:34
< >
分享
最佳答案
0

线程池建多少个线程,跟cpu的核数有关系,一般都是cpu的核数两倍多一点,再多就是排队了,有个最大排队数量,

收获园豆:20
不知道风往哪儿吹 | 小虾三级 |园豆:735 | 2020-07-13 15:16

要是这样的话,ThreadPoolTaskExecutor 的线程数量就 只能设置为很小的值了。
只要不是 超级计算机、分布式计算机,一般电脑只有几个到几十个核心吧?
要是只设置这么少的线程数量,怕是 无法满足业务需求的。

工程师二号 | 园豆:567 (小虾三级) | 2020-07-13 15:46

@工程师二号: 你多大的并发量 ,一般都是分布式,多服务器

不知道风往哪儿吹 | 园豆:735 (小虾三级) | 2020-07-13 15:48

@不知道风往哪儿吹: 千、万……
在我目前的一个场景中,是需要 通过 并发执行提高 前端接口 的 响应效率:
并发执行 多个任务。
这样,返回数据时,就是 耗时最长任务的时间了,,而不是串行。此时需要多个线程。

写这个问题,大家讨论下嘛

工程师二号 | 园豆:567 (小虾三级) | 2020-07-13 16:25

@不知道风往哪儿吹: 谢谢了!

工程师二号 | 园豆:567 (小虾三级) | 2020-07-13 17:42

@工程师二号:
要想合理地配置线程池,就必须首先分析任务特性,可以从以下几个角度来分析。

工程师二号 | 园豆:567 (小虾三级) | 2020-07-13 18:15
工程师二号 | 园豆:567 (小虾三级) | 2020-07-13 18:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册