告警规则较多时,重启N9E触发时序数据库限流

Viewed 34

问题描述:N9E重启后, 访问时序库触发了限流

背景描述:

  1. 告警规则,数量在3k+左右,所有告警规则的执行间隔都是1分钟, 后端告警对象是同一套时序数据库
  2. 我们创建告警规则的时候, 是分批创建的,一次可能几百条, 隔几天再创建一批这样子,断断续续的一共到现在3k+条
  3. 我们创建规则的时候,从来没有重启过N9E。并且一直没有出现查询时序库失败的情况
  4. 由于版本升级, 我们最近重启了N9E,重启后,开始出现查询时序库失败情况,失败原因为触发限流,每分钟都可以看到几百条的查询报错

image.png

猜想

由于我们的告警规则很多, 怀疑由于每个规则创建的时间多多少少有点差距, 相当于变相的分散在了一分钟内,qps近乎于50 ,这个值在时序库可承受范围内。但是由于重启了N9E, 所有的规则的查询时间被集中在了某一秒内,qps约等于3k,导致触发限流

总结

目前猜测是这个原因导致的, 如果是这个原因, 不知道有没有好的解决方式, 我能想到一个方式是, 在N9E重启后,对于告警规则,做一个随机的时间偏移启动检查线程,规避掉集中启动的问题

1 Answers

这个回头优化一下