整体思路
- 首先,确定线程池要执行任务的性质:CPU密集型或者IO密集型;
- 如果是CPU密集型,说明请求的处理比较占用CPU资源,瓶颈在于CPU,增加线程数作用不大;如果是IO密集型,说明请求的处理占用IO资源,CPU比较空闲,此时应该合理地增加线程数;
实际操作
Step1:预估初始大小
CPU时间 = 请求处理总耗时(CPU耗时+IO耗时) - IO耗时
Step2:调整初始大小
根据压测目标,对初始值进行调整,得到最佳的性能指标。
低延时优先
如下图所示,n2表示理论上预估的最佳大小值,n1为实际压测中得到的最佳值(此时RT最小),单机的吞吐量TPS=线程数n1/t1;
高吞吐量优先
如下图所示,n2表示理论上预估的最佳大小值,n1为实际压测中得到的最佳值(此时TPS最大);
参考: