当前位置: 首页 > 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/815831.html

相关文章:

  • 中国制造网外贸站网站快捷按钮以什么方式做
  • 余杭网站建设科技项目申报
  • 使用wordpress的购物网站公司网站建设的现状
  • 网站备案失效万维网使用的网站
  • 企业网站推广建设wordpress 上帝模式
  • 做经营网站怎么赚钱60天做网站
  • 营销网站seo推广费用营销网站运营的基本环节
  • 夸克网站免费进入视频链接生成器
  • vi设计经典案例seo提高网站排名
  • cms网站怎么建苏州发布最新消息
  • 沈阳网站开发手机免费生成logo软件
  • 阿里网站建设需要准备什么网页制作用什么软件做
  • 做吃穿住行网站网站建设要经历哪些步骤
  • 高大上强企业网站珠海建网站的网络公司
  • 网站上传完成后要怎么做wordpress做成论坛系统
  • 网页上传和网站开发优化网站要多少钱
  • 网站开发文档步骤应该怎么写卫生间装修效果图
  • 怎样申请自己的网站东营市东营区建设信息网
  • 怎么用服务器lp做网站seo具体优化流程
  • 建筑电工证查询网站wordpress数据过滤
  • 南昌高端网站建设wordpress 伪原创 插件
  • 雅江网站建设如何创建自己的商城
  • 自己做网站最新视频教程北京模板网站开发全包
  • 昆明网站建设价位如何使用模板网站建设网页
  • 网页在线制作网站张店学校网站建设方案
  • 怎么建立一个网站好关于公司网站建设请示
  • 四川省建设厅门户网站推广官网
  • php网站模板怎么安装校园网站管理系统
  • 怎么做电玩网站搜索引擎排名优化程序
  • 企业网站建设需要多少钱创意新颖的产品设计