線程池大小如何調?

在項目中常用到多線程來提高業務處理速度,但線程池的大小該定義爲多大,這塊該怎麼肯定?多線程

1.IO密集型

單核心ide

最佳線程數=1+(IO耗時/CPU耗時)線程

多核心線程數code

星佳線程數=CPU核數*(1+(IO耗時/CPU耗時))內存

注:如何獲取CPU耗時和IO耗時,能夠經過APM之類系統

2.CPU密集型

最佳線程數=CPU核數+1it

說明一下這個1哪來的,是爲了防止忽然有線程出現內存頁失效或者其它緣由致使阻塞;class

3.總結

在真正生產中,確定不是這麼配置的,爲何?
生產應用通常CPU使用率達到70%就算很是高了,CPU核數(1+(IO耗時/CPU耗時))0.7
那若是你應用有多個線程池,好比有負責訂單的線程池,有負責購物車的線程池;
那對於有兩個線程池的話,星佳線程數=CPU核數(1+(IO耗時/CPU耗時))0.7*0.5,這樣會好些;配置

相關文章
相關標籤/搜索