すのはら荘春原庄的雪

注解@EnableAsync使用注意项

Toretto·2023-01-12 15:06·354 次阅读

注解@EnableAsync使用注意项

注解@EnableAsync使用注意项

以异步性能优化为目的,反而带来的整体业务不可用的结果,是不可取的一种优化。

Spring Boot默认用于异步任务的配置参数其中两项如下:

queueCapacity:缓冲队列的容量,默认为INT的最大值(2的31次方-1)。

maxSize:允 许的最大线程数,默认为INT的最大值(2的31次方-1)。

其默认使用的是 SimpleAsyncTaskExecutor。

而SimpleAsyncTaskExecutor 不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。

并发大的时候会产生严重的性能问题。

真正使用的时候,需要对异步任务的执行线程池做一些基础的配置,以防止出现内存溢出导致不可用的问题。

配置文件配置有一下参数:

#线程池创建时的初始化线程数,默认为8

spring.task.execution.pool.core-size=2

#线程池的最大线程数,默认为int最大值

spring.task.execution.pool.max-size=5

#用来缓冲执行任务的队列,默认为int最大值

spring.task.execution.pool.queue-capacity=10

#线程终止前允许保持空闲的时间

spring.task.execution.pool.keep-alive=60s

#是否允许核心线程超时

spring.task.execution.pool.allow-core-thread-timeout=true

#是否等待剩余任务完成后才关闭应用

spring.task.execution.shutdown.await-termination=false

#等待剩余任务完成的最大时间

spring.task.execution.shutdown.await-termination-period=

#线程名的前缀,设置好了之后可以方便我们在日志中查看处理任务所在的线程池

spring.task.execution.thread-name-prefix=task-

 

参考网址 https://www.51cto.com/article/682634.html

参考网址 https://blog.csdn.net/qq_38545713/article/details/94589931?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-94589931-blog-123398420.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-94589931-blog-123398420.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=5

 

posted @   subtlman  阅读(354)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示