在項目中常用到多線程來提高業務處理速度,但線程池的大小該定義爲多大,這塊該怎麼肯定?多線程
單核心ide
最佳線程數=1+(IO耗時/CPU耗時)線程
多核心線程數code
星佳線程數=CPU核數*(1+(IO耗時/CPU耗時))內存
注:如何獲取CPU耗時和IO耗時,能夠經過APM之類系統
最佳線程數=CPU核數+1it
說明一下這個1哪來的,是爲了防止忽然有線程出現內存頁失效或者其它緣由致使阻塞;class
在真正生產中,確定不是這麼配置的,爲何?
生產應用通常CPU使用率達到70%就算很是高了,CPU核數(1+(IO耗時/CPU耗時))0.7
那若是你應用有多個線程池,好比有負責訂單的線程池,有負責購物車的線程池;
那對於有兩個線程池的話,星佳線程數=CPU核數(1+(IO耗時/CPU耗時))0.7*0.5,這樣會好些;配置