dynamic-tp v1.2.1 已经发布,轻量级动态线程池
此版本更新内容包括:
实时指标监控端点名称从 dynamic-tp 修改为 dynamictp,消除 springboot 的非法字符 warn 警告。
dynamic-tp
dynamictp
v1.2.1 之前版本里告警规则比较简单,通过 threshold 和 interval 字段来控制。
threshold
interval
dynamictp: # 全局配置 globalExecutorProps: # 线程池配置 > 全局配置 > 字段默认值 rejectedHandlerType: CallerRunsPolicy queueType: VariableLinkedBlockingQueue waitForTasksToCompleteOnShutdown: true awaitTerminationSeconds: 3 taskWrapperNames: ["swTrace", "ttl", "mdc"] queueTimeout: 300 runTimeout: 300 notifyItems: # 报警项,不配置自动会按默认值(查看源码NotifyItem类)配置(变更通知、容量报警、活性报警、拒绝报警、任务超时报警) - type: change interval: 10 - type: capacity # 队列容量使用率,报警项类型,查看源码 NotifyTypeEnum枚举类 threshold: 80 # 报警阈值,默认70,意思是队列使用率达到70%告警 interval: 120 # 报警间隔(单位:s),默认120 - type: liveness # 线程池活性 threshold: 80 # 报警阈值,默认 70,意思是活性达到70%告警 interval: 120 - type: reject # 触发任务拒绝告警 threshold: 1 # 默认阈值10 interval: 120 - type: run_timeout # 任务执行超时告警 threshold: 100 # 默认阈值10 interval: 120 - type: queue_timeout # 任务排队超时告警 threshold: 100 # 默认阈值10 interval: 120
比如对于 capacity 项:语义为当线程池队列容量达到 80%时触发一次告警,告警后 120s 内再产生的报警保持静默。
设计的比较草率,有几个问题:
数据统计需要限定在一定的时间窗口内,过期需重新计数,此处 interval 只用在了静默处理上,没统计窗口的概念
只要阈值达到了就会产生一次报警,更好的做法应该是达到阈值的次数达到某个值才算一个异常,触发一次报警
无效告警多,静默不能关闭
在 v1.2.1 版本里,我们重构了告警规则,引入 threshold、count、period、silencePeriod 四个配置字段。
count
period
silencePeriod
目前的告警语义:对于某一个告警项,在一定的统计窗口(period)内,达到阈值(threshold)的次数达到某个值(count)时才算为一个有效的异常,触发一次报警。告警后(silencePeriod)内再产生的报警保持静默,且静默可以关闭。
dynamictp: globalExecutorProps: rejectedHandlerType: CallerRunsPolicy queueType: VariableLinkedBlockingQueue waitForTasksToCompleteOnShutdown: true awaitTerminationSeconds: 3 taskWrapperNames: ["swTrace", "ttl", "mdc"] queueTimeout: 300 runTimeout: 300 notifyItems: # 报警项,不配置自动会按默认值配置(变更通知、容量报警、活性报警、拒绝报警、任务超时报警) - type: change # 线程池核心参数变更通知 silencePeriod: 120 # 通知静默时间(单位:s),默认值1,0表示不静默 - type: capacity # 队列容量使用率,报警项类型,查看源码 NotifyTypeEnum枚举类 threshold: 80 # 报警阈值,意思是队列使用率达到70%告警;默认值=70 count: 2 # 在一个统计周期内,如果触发阈值的数量达到 count,则触发报警;默认值=1 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 0 # 报警静默时间(单位:s),0表示不静默,默认值=120 - type: liveness # 线程池活性 threshold: 80 # 报警阈值,意思是活性达到70%告警;默认值=70 count: 3 # 在一个统计周期内,如果触发阈值的数量达到 count,则触发报警;默认值=1 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 0 # 报警静默时间(单位:s),0表示不静默;默认值=120 - type: reject # 触发任务拒绝告警 count: 1 # 在一个统计周期内,如果触发拒绝策略次数达到 count,则触发报警;默认值=1 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 0 # 报警静默时间(单位:s),0表示不静默;默认值=120 - type: run_timeout # 任务执行超时告警 count: 20 # 在一个统计周期内,如果执行超时次数达到 count,则触发报警;默认值=10 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 30 # 报警静默时间(单位:s),0表示不静默;默认值=120 - type: queue_timeout # 任务排队超时告警 count: 5 # 在一个统计周期内,如果排队超时次数达到 count,则触发报警;默认值=10 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 0 # 报警静默时间(单位:s),0表示不静默;默认值=120
https://github.com/dromara/dynamic-tp/pull/545
https://github.com/dromara/dynamic-tp/pull/538
https://github.com/dromara/dynamic-tp/pull/553
https://github.com/dromara/dynamic-tp/pull/542
https://github.com/dromara/dynamic-tp/pull/529
https://github.com/dromara/dynamic-tp/pull/534
https://github.com/dromara/dynamic-tp/pull/537
详情查看:https://gitee.com/dromara/dynamic-tp/releases/v1.2.1
评论删除后,数据将无法恢复
dynamic-tp v1.2.1 已经发布,轻量级动态线程池
dynamic-tp v1.2.1 已经发布,轻量级动态线程池
此版本更新内容包括:
升级注意事项
实时指标监控端点名称从
dynamic-tp修改为dynamictp,消除 springboot 的非法字符 warn 警告。v1.2.1 之前版本里告警规则比较简单,通过
threshold和interval字段来控制。比如对于 capacity 项:语义为当线程池队列容量达到 80%时触发一次告警,告警后 120s 内再产生的报警保持静默。
设计的比较草率,有几个问题:
数据统计需要限定在一定的时间窗口内,过期需重新计数,此处 interval 只用在了静默处理上,没统计窗口的概念
只要阈值达到了就会产生一次报警,更好的做法应该是达到阈值的次数达到某个值才算一个异常,触发一次报警
无效告警多,静默不能关闭
在 v1.2.1 版本里,我们重构了告警规则,引入
threshold、count、period、silencePeriod四个配置字段。目前的告警语义:对于某一个告警项,在一定的统计窗口(period)内,达到阈值(threshold)的次数达到某个值(count)时才算为一个有效的异常,触发一次报警。告警后(silencePeriod)内再产生的报警保持静默,且静默可以关闭。
Feature
Refactor
Bugfix
Dependency
详情查看:https://gitee.com/dromara/dynamic-tp/releases/v1.2.1