00:00
好,各位同学,那么我们继续。最后一个题目。又是县城吃的。刚才呢,我们已经获悉。我们这个数字根据不同的组合策略,最高上限,我们前面讲过,是不是就是最大数加这个。阻侧队列数O吧。那么接下来问题是。比较坑爹了。这个是蚂蚁金服的原籍必考。他这么问。你这设多少。你合理,你如何配置线程纸质的最佳数量?我这因为是教学,我为了配合上面那个图,我是不是自己设了个五。你生产上你涉及的。随便,看心情。那这就很诡异了。那这个事儿呢,他又变成了考你的工程经验好,你说你们公司的架构好,你个线程师里面写过,你说啊,我没写过,我我们架构师写的,我自己去用过。那么好,你们看不过源码它怎么设的。
01:02
那么这个数字应该设多少呢?那么这个就牵扯到一个重要的题目。你如何合理的配置线程池,你是如何考虑的,那么首先哈,那这个数啊,你不用担心。干嘛?耍流氓的底层源码,他是不是干了21个亿?关键是这个。初始的了不起,你现在就什么一个那。你别说一个,你看一下我们的那个。几个?可扩容的是几个?什么概念?有活就干,没活就缩,就好比你有个list,你只是整了一个声明,他要ADD以后,他说是他扩容成十啊,有点类似于有点懒加载,能理解了吧?那么这个好说,问题是。其他的数字你怎么考虑呢?那么这个时候。分为。你的业务是CPU密集型还是IO密集型,两种不一样来决定你的线程数的最佳合理配置数。
02:07
好。首先,必须。熟悉自己的硬件,我们讲过了。我们得到线程数是不是?Run time.get run time available。这个是是不是你的CPU的核心数,我们是八核的,那么好,那么接下来根据你的业务。是CPU的。还是IO密集型的,是CPU密集型还是IO密集型来决定你的做。首先你干什么事,你要先衡量自己的本钱,我这个到底是四核还是八核的,你不是胡说八道乱设的,也就是说你跟人家讲一个干嘛啊,如果合理线程做第一步我先要调用这个方法,知道我运行的阿里云或者我们公司的服务器是几核的。你的硬件加底你是不是得清楚啊,基本上只要答出这句话的,我一定相信你干过。否则你们胡说八道,给我喷个数字,我马上会问,为什么36?
03:01
17。还是108。理工科我们是啊,一步一步都要有出处和逻辑的,你不是胡说八道的,你怎么知道这个数字,而且你你数字你说因为我们老大这儿设了个50哥,你把这个东道如果换一台机器,它是从八核的变成16核的,它性能是不一样的。首先你要看你的合数啊。好。如果你是CPU密集型。大量的运算。就是什么呢。有没有阻塞?没有那么干嘛,CPU一直全速。开打。那么这个时候干嘛多核的,但是单和上你就不要想这个了,单核你就不要搞了,当然恭喜你们,你们现在永远不会有单核了。干嘛呢?如果是CPU密集型,那么就是你的合数加一个线程的。数字。啥意思啊?说白了。配高一个,假设你是个八核的,每盒一个去干,不要尽量的减少切换。
04:04
这是第一种。第二种呢,如果你是IO机型,那么这个时候。我们的算法呢?两种,这两种干嘛呢?一种是我跟技术经理在大厂的某大厂技术经理交流了以后得到的,但是市面上一般你去看书,他会给你说第一种,我们两种都介绍一下,具体你怎么配啊。直接在测试环境,根据你的业务哪一种效果好,或者只就是拿生产派,只要不死的前提下去做你的并发测试,哪一种效果好,用哪一种,这个话我也不敢说死,但是至少我们现有方子OK,个体差异和业务的并发量。第一种。IO密集型的任务并不是一直在执行任务。干嘛?所以尽可能的配多,那么你的CPU和数干嘛?杨哥这个本子是八核乘个二,这个数就设成16。听懂好,那么第二种情况呢,这个是人家在生产上某大厂用过的,那么做一个分享。
05:07
IO就有大量的阻塞。最最操蛋的一句说法的话是什么来着?什么叫CPU密集就是。假设你写个Y要处死循环唰就弄上了,是不是就高了,那什么叫IO密集大哥,你做的数据库那个磁道B去取数据,咔嚓咔嚓咔嚓去取,你这IO有中断,好,我有十个任务,1万个任务,我不停的要去数据库red或者是买SQ拿数据,他有IO的交流,那么这个如果是IO密集型的,我们请看。那呢干嘛呢?参考公式,那么就是CPU。干嘛除以一减阻塞系数。这个阻塞系数大概在0.8~0.9之间,一般我们取个乐观值0.9,那什么意思呢?比如说杨哥刚才是八核的CPU。八除以一减0.9,那么我这个线程数就可以是达到80。
06:06
如果这种设你是要拿公式去跟人家说明白,理工科只浮公式,公式是对所有纷繁复杂事物的高度抽象,那么这个时候基本上CPU核数,你哪来CPU核数?CPU核数就是一行代码。除以一减阻塞系数,阻塞系数一般是干嘛?0.8~0.9,那么这个时候我这儿如果我中机器,假设一个小服务器配个80。所以说这个合理线程素你你说的出来,因为大产就是这样,你有没有用过好用过,你说说原理好,你们这个是用默认的,还是用手写的,还是你们自定义的,自定义的,那你写没写过,我没写过,那你哪来的,我用我们架构师写的,那你看没看过,没有好你的技术的钻研能力,你他要你第一个技术好,第二个很钻研。我知道这个东西不是你写的,但你如果你只是满足啊得得得能上线或干完,可能你的能力、态度、意愿就是只能是什么到完成这个级别。
07:08
差不多。40万以内。你可以交代了,但是你不但能够完成,你还可以往上窜,可以到完美这个级别,我不停的攀科技术,哦,那么原来是他是这么写的,那么随着技术的堆叠,我来换一种行诺,你有对兴趣,对技术有这种追求,热情和感兴趣,你不是完成活下班族人,你愿意去做啊。精心的准备,那么OK,这一种他问的出来就是不是你写的,你有没有看过,他经常会问,大厂经常会问这个问题,好,假设你在联动优势,你们的内部的那套记账系统,你的那套风控系统,那套支付系统。在你得到源码的权限范围以内,你看过多少?说说你看过的心得,跟我说一下。没有,我只是调API能够完成活急,我知道了,熟练工版最多你跳个槽,给你涨个3000块钱撑死,但是你想去更高的平台,就说更牛逼的东东,没有这个机会,因为你的研发能力不足,研发潜力不够。
08:01
那么呢,这个就是我们的什么线程数相关的配置。
我来说两句