10-创建多少线程数才是合适的

1、为什么要使用多线程?

性能的核心指标:

延迟,指的是发送请求到收到响应的过程的耗时。延迟越短,程序执行时间越短,性能越好。

吞吐量,指的是单位时间能够处理的请求数。吞吐量越大,意味着程序能处理的请求越多,性能也就越好。

所以,要提升性能,就是要  降低程序的延迟。提高程序的吞吐量。

两个方向:1.优化算法 2.将硬件的性能发挥到极致,具体来讲,就是要提升硬件的利用率,再具体的讲,就是要提升 I/O利用率和CPU利用率。

 

2、不同的场景工程上有不同的线程数经验值

CPU密集型:最佳线程数=CPU核数+1

I/O密集型:最佳线程数=CPU核数 *(1+(I/O耗时 / CPU耗时))

 

不过,定性的io密集或者cpu密集很难在定量的维度上反应出性能瓶颈,而且公式上忽略了线程数增加带来的cpu消耗,性能优化还是要定量比较好,这样不会盲目,比如io已经成为了瓶颈,增加线程或许带来不了性能提升,这个时候是不是可以考虑用cpu换取带宽,压缩数据,或者逻辑上少发送一些。经验值在大部分应用环境是合理的,是积累了一些调优经验后给出的方案,没有特殊需求,初始值我会选大家都在用的标准。

posted @ 2019-10-21 17:12  45°仰望星空  阅读(503)  评论(0编辑  收藏  举报