高并发情况下创建多少线程合适
CPU 密集型程序创建多少个线程合适?
计算(CPU)密集型的线程恰好在某时因为发生一个页错误或者因其他原因而暂停,刚好有一个“额外”的线程,可以确保在这种情况下CPU周期不会中断工作。
所以对于CPU密集型程序, CPU 核数(逻辑)+ 1
个线程数是比较好的经验值的原因了
I/O密集型程序创建多少个线程合适?
最佳线程数 = (1/CPU利用率)
= 1 + (I/O耗时/CPU耗时)
I/O 密集型程序的最佳线程数就是:
按照上面公式,假如几乎全是 I/O耗时,所以纯理论你就可以说是 2N(N=CPU核数),当然也有说 2N + 1的,(我猜这个 1 也是 backup)
最佳线程数 = CPU核心数
* (1/CPU利用率)
= CPU核心数
* (1 + (I/O耗时/CPU耗时))
可以利用 SkyWalking 、 CAT 、 zipkin 查看 IO 耗时 、CPU耗时以及CPU利用率