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

目录:

概述编辑

版本

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

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

http线程阻塞功能逻辑优化

11.5.3新增配置库线程熔断功能
11.5.4新增配置库、文件服务、状态服务等组件的报表计算相关请求限流功能
11.5.6新增配置库、文件服务、状态服务等组件的平台请求限流功能

功能简介

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

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

解决http线程阻塞编辑

应用场景:对于 http 线程池中的 FineReport 报表类线程任务,在不同的线程负载状态下根据超时和线程阻塞状况,进行相关的线程中断,终止任务,避免 http 线程被占满而宕机。

版本要求:11.0.34 及之后版本 FineReport 支持

如何启用功能

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

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

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

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

功能生效场景

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

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

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

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

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

线程池扩容

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

执行动作:

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

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

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

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

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

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

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

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

解决数据连接取数阻塞编辑

应用场景:针对取数链路中的高风险场景,如数据连接异常、连接阻塞、系统线程资源紧张,自动监控识别风险,并在取数阻塞后进行报错提醒、资源释放,保护系统

版本要求:11.5.4 及之后版本 FineReport 支持

如何启用功能

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

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

功能生效场景

场景
功能说明
取数限流

执行时机:创建连接时触发检查

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

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

  • 取数请求数量,超过http最大线程池大小的50%

执行动作:

  • 还未到达业务库获取连接、取数等流程的http请求进行报错返回

  • 提示「当前系统线程压力过大,本次请求无法正常执行,请联系管理员检查数据连接后重试」

取数熔断

执行时机:创建连接时触发检查

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

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

  • SQL查询取数请求数量,超过http最大线程池大小的50%

执行动作:

  • 筛选并中断运行时间超过 5 分钟的长时任务

  • 发送告警信息通知管理员「取数导致线程负载压力过高,为防止宕机已触发以下数据连接的线程熔断:xxx」

数据连接告警执行时机:创建连接时触发检查

判断条件:

  • 超出该执行时长的数据连接请求,称为「长连接」:「管理系统-智能运维>负载管理>模板限制」中设置的sql最大执行时长(默认600s)+60s

  • 数据连接中「长连接」数量,超过该数据连接最大活动连接数80%

执行动作:

  • 发送告警信息通知管理员「【告警通知】尊敬的用户,检测到{xxx} 数据连接运行异常:当前连接资源已接近上限,可能导致该数据连接相关查询业务延迟、失败。请尽快检查数据源的连接状态,或联系技术支持协助排查」

  • 同一数据连接告警间隔为30分钟,若30分钟后仍然存在长连接过多的情况,会再次触发告警

解决项目组件阻塞编辑

应用场景:统计配置库、状态服务、文件服务等项目组件的线程数量,在系统线程高负载后进行新请求的快速失败报错,提示用户排查组件问题

如何启用功能

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

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

功能生效场景

场景
功能说明
配置库线程熔断

11.5.3 及之后版本 FineReport 支持

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

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

  • 配置库线程数量超过http最大线程池大小的50%

执行动作:

中断耗时超过1分钟、且状态为TIME_WAITING的线程

提示:当前系统线程压力过大,本次请求因为获取配置库数据连接耗时过长,已被线程熔断中断

配置库、状态服务、文件服务

报表计算类线程限流

11.5.4 及之后版本 FineReport 支持

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

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

  • 配置库/状态服务/文件服务线程数量超过http最大线程池大小的50%

  • 其中支持监测的文件服务类型为FTP、SFTP、S3、minio

执行动作:

对还未执行的报表计算相关的配置库/状态服务/文件服务http请求进行报错返回

提示「当前系统线程压力过大,本次请求无法正常执行,请联系管理员检查配置数据库/状态服务器/文件服务器后重试」

配置库、状态服务、文件服务

平台请求类线程限流

11.5.6 及之后版本 FineReport 支持

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

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

  • 配置库/状态服务/文件服务线程数量超过http最大线程池大小的50%

  • 其中支持监测的文件服务类型为FTP、SFTP、S3、minio

执行动作:

对以下高频平台请求进行监控,当触发限流条件时,对还未执行的配置库/状态服务/文件服务http请求进行报错返回

提示「当前系统线程压力过大,本次请求无法正常执行,请联系管理员检查配置数据库/状态服务器/文件服务器后重试」

/v10/entry/roots
/v10/user/config
/v10/user/roles
/v10/synchronize/source
/v10/department/root
/v10/departments/decision-dep-root
/v10/roles
/v10/user/infos
/v10/homepages/2
/v10/config/appearance/login
/v10/config/appearance/themes
/v10/config/appearance/style
/v10/config/appearance/entry/expansion
/v10/config/appearance/reportlet/style
/v10/config/login
/v10/user/account
/v10/config/visualization/param
/v10/config/print
/v10/config/sms
/v10/config/email/account/all
/v10/schedule/task/search
/v10/schedule/task/log/info
/v10/schedule/executing

文件服务报表计算类线程限流

11.5.4 及之后版本 FineReport 支持

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

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

  • 文件服务线程数量超过http最大线程池大小的50%

  • 文件服务类型为FTP、SFTP、S3、minio

执行动作:

对还未执行的报表计算相关的文件服务http请求进行报错返回

提示「当前系统线程压力过大,本次请求无法正常执行,请联系管理员检查文件服务器后重试」

历史版本说明编辑

开启功能

如需启用「资源调度熔断」功能,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关闭

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

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