问题描述:N9E重启后, 访问时序库触发了限流
背景描述:
- 告警规则,数量在3k+左右,所有告警规则的执行间隔都是1分钟, 后端告警对象是同一套时序数据库
- 我们创建告警规则的时候, 是分批创建的,一次可能几百条, 隔几天再创建一批这样子,断断续续的一共到现在3k+条
- 我们创建规则的时候,从来没有重启过N9E。并且一直没有出现查询时序库失败的情况
- 由于版本升级, 我们最近重启了N9E,重启后,开始出现查询时序库失败情况,失败原因为触发限流,每分钟都可以看到几百条的查询报错
猜想
由于我们的告警规则很多, 怀疑由于每个规则创建的时间多多少少有点差距, 相当于变相的分散在了一分钟内,qps近乎于50 ,这个值在时序库可承受范围内。但是由于重启了N9E, 所有的规则的查询时间被集中在了某一秒内,qps约等于3k,导致触发限流
总结
目前猜测是这个原因导致的, 如果是这个原因, 不知道有没有好的解决方式, 我能想到一个方式是, 在N9E重启后,对于告警规则,做一个随机的时间偏移启动检查线程,规避掉集中启动的问题