当我们每秒收到200个请求,并且线程之间的资源没有任何依赖性时。
我们目前正在使用以下代码
@Bean
public ThreadPoolTaskExecutor getTaskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
int maxPoolSize = 1;
if(Runtime.getRuntime().availableProcessors()-4>1){
maxPoolSize = Runtime.getRuntime().availableProcessors()-4;
}
taskExecutor.setMaxPoolSize(maxPoolSize);
System.out.println("Thread pool size SaveThread : "+taskExecutor.getMaxPoolSize());
taskExecutor.setDaemon(true);
taskExecutor.setThreadNamePrefix("SaveThread-");
taskExecutor.initialize();
return taskExecutor;
}
答案 0 :(得分:1)
对于粗略估计,您可以考虑以下公式:
线程数=(请求处理时间毫秒/ 1000)* number_of_request_to_handle
示例:您在30毫秒内处理请求。要处理200个请求/秒,您需要大约6个线程+一些缓冲区。
您还需要考虑:
最好的方法是设置从软件未运行的其他计算机执行的一些性能测试。