当前位置: 首页 > wzjs >正文

网做英文网站网站建设知名公司

网做英文网站,网站建设知名公司,深圳响应式网站设计,大丰做网站哪家公司好文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时,发现一个异常堆栈信息,核心报错: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…

文章目录

  • 1、报错
  • 2、定位
  • 3、修复
  • 4、线程池使用的一点思考

1、报错

检索项目日志时,发现一个异常堆栈信息,核心报错:

java.util.concurrent.RejectedExecutionException: 
Task java.util.concurrent.CompletableFuture$AsyncSupply@480a10c7 
rejected from java.util.concurrent.ThreadPoolExecutor@51313448
[Running, pool size = 32, active threads = 32, queued tasks = 200, completed tasks = 2487]
// ...

关键字:RejectedExecutionException,从这个异常可以看出,这是因为往线程池提交的任务数量超过了最大线程数 + 阻塞队列长度,然后任务再提交过来,线程池无法再接收新的任务,走了默认的拒绝策略 AbortPoligy:直接抛出RejectedExecutionExption异常阻止系统正常运行

2、定位

查看堆栈信息里的信息,定位到异常代码出自:

@Service
public class InspectionService {private static final Logger log = LoggerFactory.getLogger(InspectionService.class);private final ExecutorService pool = new ThreadPoolExecutor(16,		// 常驻线程数量32,		// 最大线程数量10,		// 线程存活时间,线程多长时间没被使用就关闭TimeUnit.SECONDS,	// 上一个参数的单位new LinkedBlockingQueue<>(200),		// 阻塞队列new ThreadFactoryBuilder().setNameFormat("InspectionService-%d").build(),	// 线程工厂对象new ThreadPoolExecutor.AbortPolicy()		// 拒绝策略);
// ....

再下面CompleteableFuture再提交任务到线程池:

CompletableFuture.supplyAsync(() -> service.queryGroupInfo(), pool)
//....

提交速度 >> 线程池处理速度

3、修复

调大了阻塞队列的长度:

private final ExecutorService pool = new ThreadPoolExecutor(16,32,10,TimeUnit.SECONDS,// groupInfos.size < 500, 这里取length * 1.5new LinkedBlockingQueue<>(700),new ThreadFactoryBuilder().setNameFormat("InspectionService-%d").build(),new ThreadPoolExecutor.AbortPolicy()
);

4、线程池使用的一点思考

  • 线程池自己定义,JDK中静态方法创建的阻塞队列长度为Long.MAX_VALUE,风险很高
参数设置要点示例
corePoolSizeCPU密集型:N+1(N=CPU核数)IO密集型:2N8核服务器:CPU密集型设9,IO密集型设16
maximumPoolSize不超过系统最大线程数(cat /proc/sys/kernel/threads-max)通常设置 coreSize 的 2-4 倍
blockQueue有界队列!无界队列=内存炸弹new LinkedBlockingQueue<>(200)
keepAliveTime线程空闲回收时间(建议30-60秒)TimeUnit.SECONDS + 10
  • 线程池中的线程带名字,不要用默认的pool-xxx,出现问题不好定位是哪儿的任务
  • 可以加必要监控,采集日志分析,到达阈值时告警处理
// 定时采集关键指标(每30秒)
// 单例调度线程池ScheduledExecutorService monitor = Executors.newSingleThreadScheduledExecutor();monitor.scheduleAtFixedRate(() -> {if (pool instanceof ThreadPoolExecutor executor) {int activeCount = executor.getActiveCount();int queueSize = executor.getQueue().size();long completedTaskCount = executor.getCompletedTaskCount();log.info("线程池状态:活跃线程:{} 队列堆积:{} 完成数:{}", activeCount, queueSize, completedTaskCount);if (queueSize > 500) {log.warn("线程池队列堆积过多,队列堆积:{} 完成数:{}", queueSize, completedTaskCount);}}}, 0, 30, TimeUnit.SECONDS);}

在这里插入图片描述

  • 核心业务与非核心业务使用独立线程池,做到资源隔离
http://www.dtcms.com/wzjs/360440.html

相关文章:

  • 企业网站优化徽号liu7yin出本词效果抖快均可做a7东莞做好网络推广
  • wordpress 导航样式怎么理解搜索引擎优化
  • 云南装饰公司做网站深圳百度竞价推广
  • 广安哪里做网站互动营销名词解释
  • wordpress复制的图片不显示图片天津企业seo
  • 探测网站是什么程序做的搜索引擎优化的对比
  • 南京网络科技网站建设种子搜索神器下载
  • 怎么免费搭建一个网站北京百度推广优化公司
  • 网站跳转怎么做网络营销seo优化
  • 营销网站科技杭州网站seo推广
  • 免费做会计试题网站无代码网站开发平台
  • 网站建设最新外文翻译google首页
  • 动图在线制作网站百度网站制作联系方式
  • 企业管理软件erp长沙seo网站推广
  • 2003系统建网站广告联盟广告点击一次多少钱
  • 一站式的手机网站制作seo实战视频
  • wordpress链接数据库文件夹seo长尾关键词
  • 免费做图片链接网站2345网址导航下载桌面
  • 99 wordpress.com爱站网seo查询
  • 公司做网站需要去公安备案吗宁波百度推广优化
  • 装修网站实景图vr怎么做的网络营销策划案怎么写
  • 网页版梦幻西游能赚钱吗厦门seo公司到1火星
  • 关于幼儿建设网站ppt广西seo关键词怎么优化
  • 安全狗iis 网站css无法访问石家庄网站建设案例
  • 邢台市建设银行网站陕西网站建设网络公司
  • 不成立公司怎么做企业网站竞价推广渠道
  • 银川网站建设一条龙服务sem是什么岗位
  • 郴州建设网站哪家好搭建一个app平台需要多少钱
  • 做外贸在那些网站找业务现在推广用什么平台
  • 公司网站建设济南兴田德润地址aso推广方案