本项目是一个基于 Spring Boot
的线程池监控组件,提供动态配置线程池参数的功能,支持监控线程池的运行状态,并实现线程池参数的自动调整。
- 动态配置线程池参数:支持在运行时动态调整线程池的核心参数。
- 线程池运行状态监控:通过
Spring Boot
的actuator
模块,结合Prometheus
暴露监控指标,并通过Grafana
展示监控图表。 - 自定义指标统计:基于滑动窗口算法,支持
QPS
、平均耗时
、总数
、异常数
、成功率
等指标。 - 支持多种队列类型:包括
LinkedBlockingQueue
、ArrayBlockingQueue
、SynchronousQueue
、PriorityBlockingQueue
。 - 支持多种拒绝策略:包括
AbortPolicy
、CallerRunsPolicy
、DiscardOldestPolicy
、DiscardPolicy
。 - 全局配置选项:可对所有线程池生效的全局配置。
dynamic-thread-pool.monitor.export.enabled
:是否开启监控指标的暴露,默认true
。dynamic-thread-pool.monitor.export.port
:暴露监控指标的端口,默认18081
。dynamic-thread-pool.monitor.export.step
:监控指标的采集间隔,默认1s
。dynamic-thread-pool.adaptive.enabled
:是否开启线程池参数自动调整,默认false
,需先开启对应线程池监控。dynamic-thread-pool.monitor.baseMonitorUrl
:监控指标的基础 URL,用于拼接线程池监控 URL。dynamic-thread-pool.adaptive.adjustmentIntervalMs
:自动调整线程池参数的间隔时间,默认30000ms
。
- 线程池管理界面:只能查看和修改线程池的参数配置信息,不能新增或删除线程池,新增或删除线程池需要修改配置文件并重启服务。
- 本地配置:只能查看和修改本机的线程池配置,无法查看和修改其他机器的线程池配置。使用者可以对接 RESTful API 结合前端页面实现多机器的线程池管理。
- Grafana 配置:监控面板的 JSON
配置文件位于
grafana/provisioning/dashboards/thread-pool-monitor.json
目录下,可以直接导入到 Grafana 中使用,默认数据源名称为Prometheus-Thread-Monitor
,可全局替换为你的数据源名称。 - 生产使用:如需在生产环境中使用,请务必先经过充分测试。
注意:如果覆盖了
management.endpoints.web.exposure.include
配置,需要确保包含了prometheus
或all
,否则监控指标无法暴露。
-
引入依赖
将本项目中的
jupiter-thread-pool
模块打包成jar
包,通过 Maven 或其它方式引入到你的项目中。 -
添加配置
在你的
Spring Boot
项目的application.yml
或application.properties
中添加线程池初始化配置,例如:dynamic-thread-pool: pools: bizThreadPool: corePoolSize: 10 maxPoolSize: 10 keepAliveTimeMs: 6000 workQueue: type: "LinkedBlockingQueue" capacity: 32 policy: "AbortPolicy" monitor: enabled: true timeWindowSeconds: 3 monitorUrl: "xxx" # 可以添加多个线程池配置 otherThreadPool: ... monitor: baseMonitorUrl: "xxx"
-
启动项目
在启动类上添加
@EnableDynamicThreadPool
注解,启动你的项目。 -
访问管理界面
访问
http://{{your_server_host}}:{{your_server_port}}/thread-pool
,例如:http://localhost:8081/thread-pool
即可查看线程池监控管理页面。如果使用了Spring Security
或其他安全框架,需要配置对应的权限。 -
查看监控指标
访问
http://{{your_server_host}}:{{your_metrics_export_port}}/actuator/prometheus
,例如:http://localhost:18081/actuator/prometheus
即可查看线程池的监控指标。
-
安装 Docker。
-
进入项目根目录
mp-weixin-demo/thread-monitor
,执行以下命令:docker compose up -d
-
访问
http://localhost:8081/thread-pool
查看线程池管理页面,点击线程池列表的监控按钮,查看对应的线程池监控图表。
通过上述步骤,你可以快速集成并使用本项目提供的线程池监控与管理功能。如果有任何问题或建议,欢迎反馈。
欢迎关注我的公众号“子安聊代码”,一起探讨技术。