最新历史版本 :资源调度线程熔断 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

概述编辑

版本

报表服务器版本
功能变更
11.0
-
11.0.32触发逻辑和提示优化
11.0.34

新增配置项「报表限流阈值

触发逻辑优化

功能简介

在用户访问工程资源时,可能会出现线程阻塞等问题,而这些问题往往会导致工程宕机。

帆软提供「资源调度熔断」功能,对线程阻塞问题提供兜底容错策略,降低宕机风险。

11.0.34及以上版本编辑

开启功能

1)管理员登录帆软应用,点击「管理系统>系统管理>常规」

2)在「防宕机专项配置」中,开启「线程熔断」开关,配置「报表限流阈值」,保存即可。

  • 「线程熔断」为总开关,未开启时「报表限流阈值」配置无效

  • 「报表限流阈值」支持用户自定义设置,默认值为 0.5(即 50%),有效设置范围为 0到 1之间的小数

功能作用

1)检查触发条件:

系统每处理 40 个请求时,会自动触发一次线程池状态检查

2)负载判断标准:

当线程池使用率>80%时,判定为「线程高负载」状态

当线程池使用率≤80%时,判定为「线程低负载」状态

3)场景说明:

场景
功能说明
多阻塞线程中断执行时机:每次提交报表业务时触发检查
判断条件:检查是否存在一个线程阻塞了超过 5个其他线程的情况
执行动作:当满足条件时,系统会立即中断该阻塞线程
超时线程中断

执行时机:每处理 40 个请求时触发检查
判断条件:

  • 在高负载状态下(线程池使用率>80%):检查是否存在运行时间超过 1 小时的线程

  • 在低负载状态下(线程池使用率≤80%):检查是否存在运行时间超过 8 小时的线程

执行动作:当满足条件时,系统会中断对应的超时线程

线程池扩容

执行时机:每次提交报表业务时触发检查
判断条件:线程池使用率>80%(高负载状态)

执行动作:

  • 计算新的线程池容量:取"线程池当前容量×2"和"800"中的较小值

  • 将线程池容量扩容至计算得到的新值

报表线程限流

执行时机:每次提交报表业务时触发检查

判断条件:同时满足以下三个条件:

  • 线程池使用率>80%(高负载状态)

  • 线程池已达到扩容上限(即已经扩容到 800)

  • 当前报表业务请求数占总请求数的比例 > 配置的「报表限流阈值」

执行动作:系统将对报表业务线程进行限流处理

11.0.33及以下版本编辑

开启功能

如需启用「资源调度熔断」功能,不同版本的FineReport开启步骤不同,请根据自身情况选择对应开启步骤。

FineReport版本
开启步骤
11.0.29及以下版本

需要安装V1.4.3及以上版本资源调度熔断插件来启用「资源调度熔断」功

点击下载插件:资源调度熔断插件

设计器插件安装方法参照:设计器插件管理

服务器安装插件方法参照:服务器插件管理

注:如使用V1.4.2及以下版本的资源调度熔断插件,可能在使用过程中出现报错,请务必升级。

11.0.30~11.0.33版本1)管理员登录帆软应用,点击「管理系统>系统管理>常规」

2)在「防宕机专项配置」中,开启「线程熔断」开关即可

注:FineReport从11.0.29及以下版本升级到11.0.30及以上版本后,资源调度熔断插件会自动禁用,「线程熔断」开关默认关闭,请手动开启「线程熔断」开关。

功能作用

功能开启后,以下情况自动生效。

1)使用异步线程池取代原本的http线程池。

2)CPU负载超过80%或Report线程池线程使用超过85%时,认定为线程高负载

线程高负载时,每15秒会触发一次线程阻塞死锁和长执行线程检测

  • 如果有3个以上线程阻塞在同一个session则会触发session关闭

  • 如果有线程死锁则直接中断死锁的线程,如果存在长执行线程则触发关闭

  • 线程被中止后,提示「当前系统内存压力过大触发系统防宕机保护,已中止模板计算,请稍后重试」