线程池创建和运维

怎么根据线程池告警修改线程池参数 调参通知、队列容量告警、拒绝策略告警必然是需要的 核心微服务: 必须加上 调参通知、队列容量告警、拒绝策略告警 如果是对于设备时效性要求较高=>加上 任务排队超时告警、任务执行超时告警 如果是长任务=>加上 任务执行超时告警、线程池活跃度告警。(线程池告警)该线程池的任务队列告警阈值需要降低阈值优化,如果是核心业务,则需要减少降低限度(如5%),直至可以在运维发现问题后,有足够时间让开发排查;可有可无的微服务,要避免浪费资源,也需要线程池监控查看配置,此时线程池情况可以做一个较好的缩容的指标。 阅读详情

我们可以通过如下代码创建一个线程池:
https://www.jianshu.com/p/f030aa5d7a28

线程池参数详解:
https://blog.youkuaiyun.com/qq_50652600/article/details/121212661

https://www.jianshu.com/p/e20c0ba4328c

@Component
public class RecommendFilterThreadPool {

    static ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat("threadname-threadpool").build();

    private static volatile ThreadPoolExecutor threadPoolExecutor = null;

    //Init threadpool
    public static ThreadPoolExecutor getThreadPool(){
        if(threadPoolExecutor == null){
            synchronized (SkuMatchThreadPool.class){
                if(threadPoolExecutor == null){
                    threadPoolExecutor = new ThreadPoolExecutor(
                            100,
                            100,
                            30L,
                            TimeUnit.SECONDS,
                            new LinkedBlockingQueue<>(500),
                            new RejectedExecutionHandler() {
                                @Override
                                public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
                                    throw new RuntimeException("线程池打满");
                                }
                    });
                }
            }
        }
        return threadPoolExecutor;
    }

    //Shut down threadPool
    @PreDestroy
    public void shutDownThreadPool(){
        if(threadPoolExecutor != null){
            threadPoolExecutor.shutdown();
        }
    }
}

在高并发场景会出现线程池被打满情况,在网上找到一个遇到同样问题的案例:
https://www.jianshu.com/p/8e735d25c1de
线程池的种类:
https://www.cnblogs.com/zhuyeshen/p/12683649.html
线程池参数详解:
https://blog.youkuaiyun.com/qq_35909080/article/details/87002367
https://www.cnblogs.com/it-deepinmind/p/13072269.html
补充纠正一下解决方案:
在遇到线程池被打满,有大量队列排队的情况,首先应该考虑是把超时时间设短,这样拿不到数据直接释放线程资源,第二个是考虑为什么请求会超时,是否可以找到解决方案使获取数据不超时,关于将线程池线程数增大我觉得不是合理的解决方案,因为请求超时,怎么设置都会超时,反而造成资源占用严重,影响系统整体性能

Python多线程运维脚本:提高效率的编程技巧 这意味着,尽管使用多线程可以实现并发执行,但在处理CPU密集型任务时,效果可能并不明显。然而,在处理I/O密集型任务时,多线程可以显著提高性能,因为线程可以在等待I/O操作完成时继续执行其他任务。通过合理地设计和管理线程,我们可以实现并发执行任务,提高脚本的响应能力和处理能力。然而,需要注意线程安全和同步问题,以确保脚本的正确性和稳定性。然后,我们创建了一个线程池,并遍历URL列表,为每个URL创建一个线程,并启动它们。需要注意的是,在多线程编程中,可能会遇到一些典型的问题,如线程安全、同步和资源竞争等。 阅读详情

相关推荐

四种策略、五种状态、六个核心参数、七种阻塞队列

四种策略、五种状态、六个核心参数、七种阻塞队列 开篇闲扯 其实这篇文章仅仅是多线程的冰山一小角,不论是面试还是实际工作开发,这些都是不够的。还是要多看书本上的知识,个人认为看博客得到的知识点都是盲人摸象,不成体系,这是最可怕的。如果把多线程比作一块拼图的话,那么你看的每一篇(包括我的文章)博客都仅仅是这块拼图中的零散几片,需要很长时间才能得到这个完整的多线程拼图。而当你集齐了多线程拼图的时候又会发现,原来多线程也不过是整个Java生态里的一小块,而Java生态也仅仅是软件开发行业中的产业链之一。 读专业书籍

苏州程序大白的博客 421

线程池的7种创建方式

线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制。它是将多个线程预先存储在一个“池子”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池子”内取出相应的线程执行对应的任务即可,其中核心线程默认+只要线程池不关闭,就不会被销毁,可以反复使用。内存池(Memory Pooling):预先申请内存,提升申请内存速度,减少内存碎片。连接池(Connection Pooling):预先申请数据库连接,提升申请连接的速度,降低系统的开销。

qq_46601365的博客 7413

Rocky Linux 9 远程桌面配置全攻略:从零搭建XRDP服务(含防火墙设置)

本文提供了在Rocky Linux 9上从零开始配置XRDP远程桌面服务的完整指南。详细介绍了系统准备、XRDP服务安装、防火墙与SELinux安全设置、多用户性能优化以及多平台客户端连接实测。重点解决了使用Windows远程桌面协议(RDP)连接Rocky Linux时常见的配置难点与安全问题,帮助用户获得稳定高效的图形化远程访问体验。

vodka的博客 646

【线程池】线程池的7种创建方式,详细讲解

线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制。它是将多个线程预先存储在一个“池子”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池子”内取出相应的线程执行对应的任务即可。内存池(Memory Pooling):预先申请内存,提升申请内存速度,减少内存碎片。连接池(Connection Pooling):预先申请数据库连接,提升申请连接的速度,降低系统的开销。实例池(Object Pooling):循环使用对象,减少资源在初始化和释放时的昂贵损耗。

m0_46638350的博客 1万+

【AutoDL + Langchain-Chatchat】从零构建高效本地 RAG 知识库问答系统:实战保姆级教程(含避坑指南)

本文详细阐述如何在AutoDL云平台,如何利用Langchain-Chatchat构建高效的本地RAG知识库问答系统,并深入解析RAG架构。从环境搭建到实战部署,从问题排查到性能优化,提供一份全面实用的指南,助力开发者快速构建智能问答应用。

拾光夕拾的博客 1803

机器学习预测材料性能:从特征工程到SHAP可解释性分析

机器学习在材料科学中的应用,核心在于将复杂的材料性能预测问题转化为数据驱动的建模任务。其基本原理是通过算法从历史数据中学习特征与目标属性之间的映射关系。这项技术的价值在于能够大幅加速新材料的发现与设计周期,降低传统“试错法”的高昂成本。在工程实践中,它广泛应用于预测如形成能、带隙、弹性模量以及居里温度等关键材料性能。具体到磁性材料领域,居里温度的准确预测对于永磁体和自旋电子器件设计至关重要。本项目深入探讨了如何利用特征工程从材料成分与结构中构建有效描述符,并借助SHAP这一可解释性工具,揭示模型决策背后的物

weixin_27155667的博客 650

创建线程池的七种方式

创建线程池的7种方式

jiaomubai的博客 1万+

大宗农产品交易知识图谱推理引擎的构建--需求分析

大宗农产品交易知识图谱推理引擎的构建 一、项目概述 ​ 进入信息时代,全球产生的数据量爆炸式增长,一方面数据产生的方式发生改变,由手工产生越来越多地转为自动化生成,另一方面,人类的活动也越来越依赖数据;民以食为天,粮食方面的信息数据对人类来说至关重要,而当前繁杂的数据已经超出了人工处理的范围,这就对数据采集和数据处理提出了新的要求。 知识图谱是将大量收集的数据整理成机器能处理的知识库,并实现可视化的展示。知识图谱本质上是一种大规模的语义网络,其主要目的是对真实世界里的实体或概念之间的关联关系进行描述;构造

qq_40583949的博客 2585

线程池创建方式详解(7种)

线程池的使用

2026也要一起加油鸭 3万+

ETL基础概念及要求详解

ETL即Extract(抽取)Transform(转换)Load(装载)的过程,如下图,同时也包括数据清洗的部分,是数据从源端到目标端的一个数据处理的过程,是构建数据仓库的重要一环,但不局限于构建数据仓库其他BI(商业智能)的设计和开发数据分析平台也经常用到ETL。

qq_43605229的博客 8942

手把手教你用6轴IMU跑通LIO-SAM:参数配置与代码修改保姆级教程

本文提供了一套完整的6轴IMU适配LIO-SAM的解决方案,包括参数配置与代码修改的详细步骤。从理解6轴与9轴IMU的关键差异入手,逐步指导如何调整核心配置文件params.yaml、重构utility.h关键函数、优化mapOptimization.cpp的位姿融合逻辑,并给出编译验证与性能调优建议,帮助开发者快速实现6轴IMU在LIO-SAM中的稳定运行。

weixin_28717807的博客 356

线程池常见创建方式

线程池的创建方式

m0_69440360的博客 4290

《AI应用架构师智能特征工程实践的前沿趋势解读》

面对传统方法的局限性,智能特征工程(Intelligent Feature Engineering)应运而生。智能特征工程是指利用人工智能、机器学习和自动化技术,实现特征提取、构造、选择和优化过程的自动化、智能化和可扩展化的方法和技术体系。效率提升:将数据科学家从繁琐的人工特征工程中解放出来,大幅缩短特征开发周期。质量保障:通过系统化方法发现人类难以察觉的特征模式,提高特征质量和模型性能。可扩展性:能够处理大规模、高维度和多类型的数据,适应不同领域和场景。降低门槛。

大数据洞察的博客 1179

Java 中使用 Executors 工具类创建线程池的潜在问题

Executors 工具类虽然便捷,但其预设的线程池参数(如无界队列、无限制线程数)容易引发生产环境中的严重问题。手动创建线程池是更可靠的选择,开发者需根据业务负载、资源限制和容错需求,精细配置核心参数、队列类型及拒绝策略,并结合监控实现动态调优。

qq_40453972的博客 1068

Open3D——点云构建Delaunay三角网【2026最新版】

点云构建Delaunay三角网

点云侠的博客 8365

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

运维:你们 JAVA 服务怎么又又又又出问题了,Linux运维面试送分题

而且这些线程池没有任务需要执行的话,线程肯定是 WAITING 状态,也不会占用 CPU 的利用率,负载有不会有影响。不过如果这里直接 stack ThreadPoolExecutor#execute 方法的话,干扰信息可能太多了,毕竟调用 execute 的地方太多,不好抓到重点 ​。运维:肯定是你们的屎山代码导致的,没事也搞搞 code review ,查查代码,以后少出这种低级问题,不然我一天到晚处理你们这些破事不得烦死了。2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

2401_84140384的博客 568

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

运维:你们 JAVA 服务怎么又又又又出问题了!内存降不下来!

在上次在运维老哥友好的和我沟通之后,还消停没几天,今天又来找(问候)我了…… ​运维:这个服务也是你们的吧,你看这个 JAVA 进程,内存占用都快 3 个 G 了,这机器才 4G,你们堆才配置 2G,都要告警了!这次是真的内存泄露了吧,不是我无知了吧!又来搞事情……这大哥是对我有意见吗?有了上次的经验,这回更自信了。还是按照惯例,先怼回去我:“不可能,我们服务非常稳定,不会有这种问题!”运维:你这...

yyyy11119的博客 596

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

面试官:你们项目里的线程池是怎么用的?怎么管理的?

所以回到最开始的问题:你们项目中都是怎么用线程池的?比较好的回答不是简单说“我们用了不直接使用Executors创建业务线程池使用显式指定参数队列使用有界队列,避免任务无限堆积线程工厂统一设置业务线程名拒绝策略要记录日志、打监控,不能静默丢任务线程池指标要定时采集,重点关注活跃线程数、队列长度、拒绝次数参数最好能通过配置中心动态调整异步任务需要考虑 MDC、traceId 等上下文传递线程池本身不复杂,复杂的是线上环境里的流量变化、下游抖动和任务堆积。

SevenCoding的博客 334

运维:你们 JAVA 服务怎么又又又又出问题了(1)

而且这些线程池没有任务需要执行的话,线程肯定是 WAITING 状态,也不会占用 CPU 的利用率,负载有不会有影响。不过如果这里直接 stack ThreadPoolExecutor#execute 方法的话,干扰信息可能太多了,毕竟调用 execute 的地方太多,不好抓到重点 ​。所以这个问题,肯定是哪个小天才,在代码里每次都新建线程池,然后还不 shutdown 导致的!习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

2401_84140384的博客 810

loadrunner 只能并发50_深入浅出!阿里运维专家三种方法教你如何应对高并发“海啸”场景...

作者:田杰,阿里云数据库高级运维专家在数据库的日常使用中,来自应用的高并发场景并不罕见,其标志性的表现为 高新连接创建速率(CPS,比如 PHP 短连接)、发送大量请求到 DB 数据库层。如同 海啸,大量的新建连接和请求猛烈的冲击考验着 DB 层的处理能力,非常容易出现数据库被冲击 hang 住或响应极其缓慢的情况(想象下无预知无缓冲的短时间内突然工作量翻涨数倍,会不会立时被忙哭了 ^_^)。而数...

weixin_36424234的博客 933

【常用工具使用总结】

Java工具使用总结

weixin_45988184的博客 1488

线程池的介绍、原理、监控运维、框架使用场景案例

JDK 提供的线程池功能较基础,开源框架 Executors 在此基础上做了许多封装,更加易用。主要有: - newCachedThreadPool:创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 - newFixedThreadPool: 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 - newScheduledThreadPool: 创建一个定长线程池,支持定时及周期性任务执行。 - newSingleThreadExecuto

青山师 1632

Java运维实战:线程池

本篇对java的线程池进行讲解,线程池对java应用的性能来说有很重要的影响。

龙叔运维的博客 365

深入Elasticsearch:线程池的原理与应用

在Elasticsearch中,线程池是用于管理线程资源和控制并发度的关键组件。它通过将不同类型的操作映射到不同的线程池中,实现了资源的隔离和优化。Elasticsearch的线程池设计考虑了不同类型的操作对CPU、IO和内存等资源的需求,以及操作的优先级和并发度。Elasticsearch的线程池设计是其高性能和可扩展性的基石之一。通过合理地配置和优化线程池,可以确保Elasticsearch在各种工作负载下都能提供稳定、高效的搜索和分析服务。

码到三十五 1588
上一篇: 打印日志注意事项
下一篇: swagger接口文档框架详解
程序猿-日记本
博客等级 码龄10年 204粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值