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

线程池配置经验总结

1. 核心线程数配置(corePoolSize)

1.1 核心线程数的配置影响因素
  • CPU核心数
    • CPU密集型任务:核心线程数 ≈ CPU核心数 + 1
    • IO密集型任务:核心线程数 ≈ CPU核心数 × (1 + 平均等待时间/平均计算时间) 一般经验值:2 × CPU核心数
  • 内存大小:1个线程大约需要占用1M的栈内存空间,避免内存溢出。
  • 系统整体资源协调:一个应用可能会有多个线程池,需要综合考量整个系统的所有线程数。所有线程池的核心线程数总和应小于CPU核心数的2-3倍
  • 依赖关系线程池:需考虑上下游系统的线程情况,避免下游成为瓶颈导致上游堆积。比如下游数据库连接资源不够,上游线程再多也会在阻塞状态。
  • 业务需求:根据业务的重要性和吞吐量等综合分配系统资源,避免单个线程池占用整个系统资源过多,影响其他业务。

使用Runtime.getRuntime().availableProcessors() 可以获取k8s限制后的CPU数

1.2 CPU利用率与线程设置的深度关系
1.2.1 CPU密集型任务
线程数CPU利用率吞吐量上下文切换
=核心数~95%最佳最低
>核心数100%下降急剧增加
<核心数<100%未饱和

当上下文切换次数超过核心数×10000/秒时性能下降

1.2.2 I/O密集型任务
线程数CPU利用率吞吐量资源竞争
不足<70%未饱和
适量70-90%最佳可控
过多100%下降严重
1.2.3 生产环境建议配置参考
场景CPU目标利用率线程数公式示例(8核)
纯计算任务95-100%核心数 ±17-9
普通Web服务70-85%核心数 × (1 + 平均I/O比例)16-24
高延迟外部调用60-75%核心数 × (2 + 平均I/O比例)32-40
批处理任务85-95%核心数 × 1.512

2. 最大线程数 (maximumPoolSize)

  • 通常为核心线程数的1.5-2倍
  • 对于突发流量大的场景可设置更高
  • 需考虑系统资源限制(内存、文件句柄等)

当最大线程数超过CPU核心线程数后直接表现就是提高CPU的负载,然后就是线程对内存的占用。

3. 队列容量 (workQueue capacity)

  • 根据任务特性和系统容忍度决定
  • 计算公式:队列容量 = 期望最大请求数 - (最大线程数 × 单任务平均处理时间)
  • 一般经验值:核心线程数的2-3倍

4. 空闲线程存活时间 (keepAliveTime)

  • 通常设置为60秒左右

  • 突发流量频繁的系统可适当延长

  • 资源紧张的系统可缩短时间

没有放之四海皆准的完美配置,最佳参数需要通过监控和调优不断调整。

http://www.lryc.cn/news/2385864.html

相关文章:

  • 机器学习课程设计报告 —— 基于二分类的岩石与金属识别模型
  • 分词算法BPE详解和CLIP的应用
  • STM32F103_Bootloader程序开发02 - Bootloader程序架构与STM32F103ZET6的Flash内存规划
  • 通过Auto平台与VScode搭建远程开发环境(以Stable Diffusion Web UI为例)
  • Windows_Rider C#语言开发环境构建
  • Unity 打包程序全屏置顶无边框
  • GAMES104 Piccolo引擎搭建配置
  • 第 29 场 蓝桥·算法入门赛
  • 用service 和 SCAN实现sqlplus/jdbc连接Oracle 11g RAC时负载均衡
  • Jenkins 中获取构建触发用户的完整指南
  • 防火墙流量管理
  • uniapp+ts 多环境编译
  • Linux系统移植①:uboot概念
  • linux 学习之位图(bitmap)数据结构
  • DAY 35
  • 理论篇一:了解webpack是什么,能解决什么问题,如何使用
  • AWS EC2实例安全远程访问最佳实践
  • 集群、容器云与裸金属服务器的全面对比分析
  • 【强化学习】#7 基于表格型方法的规划和学习
  • EasyRTC嵌入式音视频通信SDK一对一音视频通信,打造远程办公/医疗/教育等场景解决方案
  • Linux/aarch64架构下安装Python的Orekit开发环境
  • 网络安全-等级保护(等保) 3-2-1 GB/T 28449-2019 第6章 方案编制活动
  • Oracle Enqueue Names
  • 【免费使用】剪Y专业版 8.1/CapCut 视频编辑处理,素材和滤镜
  • 【DCGMI专题1】---DCGMI 在 Ubuntu 22.04 上的深度安装指南与原理分析(含架构图解)
  • 道德经总结
  • 实现rpc通信机制(待定)
  • MATLAB 2023b 配电柜温度报警系统仿真
  • 代码随想录打卡|Day45 图论(孤岛的总面积 、沉没孤岛、水流问题、建造最大岛屿)
  • SpringCloud实战:使用Sentinel构建可靠的微服务熔断机制