【线程池管理工具-Hippo4j】-LMLPHP

【线程池管理工具-Hippo4j】-LMLPHP

👑 线程池管理工具-Hippo4j

🥦 线程池痛点

线程池是一种基于池化思想管理线程的工具,使用线程池可以减少创建销毁线程的开销,避免线程过多导致系统资源耗尽。在高并发以及大批量的任务处理场景,线程池的使用是必不可少的。

如果有在项目中实际使用线程池,相信你可能会遇到以下痛点:

  • 线程池随便定义,线程资源过多,造成服务器高负载。
  • 线程池参数不易评估,随着业务的并发提升,业务面临出现故障的风险。
  • 线程池任务执行时间超过平均执行周期,开发人员无法感知。
  • 线程池任务堆积,触发拒绝策略,影响既有业务正常运行。
  • 当业务出现超时、熔断等问题时,因为没有监控,无法确定是不是线程池引起。
  • 原生线程池不支持运行时变量的传递,比如 MDC 上下文遇到线程池就 GG。
  • 无法执行优雅关闭,当项目关闭时,大量正在运行的线程池任务被丢弃。
  • 线程池运行中,任务执行停止,怀疑发生死锁或执行耗时操作,但是无从下手。

🥦 介绍Hippo4j

Hippo4j监控工具就是解决线程池痛点问题的,Hippo4j基于对原生的线程池ThreadPoolExecutor做了一个增强,扩展了很多的功能。

  • 所有的线程池都可以交给Hippo4j管理。
  • Hippo4j可以动态的修改线程池的核心参数,以更好的适配硬件资源,提升处理速度。
  • Hippo4j还提供了报警的功能,快速发现问题,快速解决问题。
  • 还可以实时的监控到线程池运行时的一些数据信息。
  • Hippo4j还针对一些框架的线程池,也提供监控功能
    • Web容器的线程池
    • Hystrix的线程池
    • RabbitMQ或者是RocketMQ的线程池

🥦 Hippo4j功能支持

Hippo4j 通过对 JDK 线程池增强,以及扩展三方框架底层线程池等功能,为业务系统提高线上运行保障能力。提供以下功能支持:

  • 全局管控 - 管理应用线程池实例。
  • 动态变更 - 应用运行时动态变更线程池参数,包括不限于:核心、最大线程数、阻塞队列容量、拒绝策略等。
  • 通知报警 - 内置四种报警通知策略,线程池活跃度、容量水位、拒绝策略以及任务执行时间超长。
  • 运行监控 - 实时查看线程池运行时数据,最近半小时线程池运行数据图表展示。
  • 功能扩展 - 支持线程池任务传递上下文;项目关闭时,支持等待线程池在指定时间内完成任务。
  • 多种模式 - 内置两种使用模式:依赖配置中心 和 无中间件依赖。
  • 容器管理 - Tomcat、Jetty、Undertow 容器线程池运行时查看和线程数变更。
  • 框架适配 - Dubbo、Hystrix、RabbitMQ、RocketMQ 等消费线程池运行时数据查看和线程数变更。

🥦 Hippo4j快速入门

Hippo4j有两个角色,一个Sever,一个Client

Server就是Hippo4j的图形化界面,监控功能都在里面

Client就是自己的工程项目,需要正常的引入Hippo4j的依赖,将构建线程池的方式更改为Hippo4j的要求的形式,再编写好各种配置文件即可。

💬 共勉

【线程池管理工具-Hippo4j】-LMLPHP

【线程池管理工具-Hippo4j】-LMLPHP

07-13 12:22