项目一 今日指数:
股票采集服务线程池优化
背景:
目前,股票或者板块的数据在批量插入时是串行执行的,显然数据库I/0时间成本比较高,所以,我们可引入多线程并发插入,提高操作效率,但是随着而来的问题如下:
1.当前项目是单体架构,股票数据采集线程和主业务线程共享,如果股票线程长时间占用CPU,会造成主业务线程无法正常提供有效服务(线程挤压问题),这时,我们可以通过线程池与主业务进行隔离;
2.线程频繁的创建和销毁会带来非常大的性能开销,我们尽量提高线程的复用性;
定时任务线程池基础参数 yml配置:
task:
pool:
corePoolSize: 5 # 核心线程数
maxPoolSize: 20 # 设置最大线程数
keepAliveSeconds: 300 # 设置线程活跃时间
queueCapacity: 100 # 设置队列容量