一般说来大家认为线程池的大尛经验值应该这样设置:(其中N为CPU的个数)
- 如果是CPU密集型应用,则线程池大小设置为N+1
- 如果是IO密集型应用则线程池大小设置为2N+1(因为io读数據或者缓存的时候,线程等待此时如果多开线程,能有效提高cpu利用率)
如果一台服务器上只部署这一个应用并且只有这一个线程池那麼这种估算或许合理,具体还需自行测试验证
但是,IO优化中这样的估算公式可能更适合:
最佳线程数目 = ((线程等待时间+线程CPU时间)/線程CPU时间 )* CPU数目
因为很显然,线程等待时间所占比例越高需要越多线程。线程CPU时间所占比例越高需要越少线程。
著作权归作者所有商业转载请联系作者获得授权,非商业转载请注明