全部产品
Search
文档中心

函数计算:为什么SLS触发器触发函数执行的频次有时高于预期?

更新时间:Jan 03, 2024

日志服务SLS的每个Shard在有新的数据写入的情况下都会触发函数执行,所以您看到的触发频次是一个Logstore整体的触发次数。同时当触发发生延迟时触发器会追赶数据,可能会缩短触发间隔。

问题现象

SLS触发器触发函数执行的频次有时高于预期的触发频次。

问题原因

每个Shard是单独触发的,您看到的可能是一个Logstore整体触发次数很多,但每个Shard实时触发时间是符合间隔的。

单个Shard的触发间隔和每次处理的数据范围相同(时间区间)。触发间隔在函数执行时分如下两种情况,假设触发间隔为60秒。

  • 触发没有延迟:按照设定周期触发,每60秒触发一次,处理的数据范围为 [now -60s, now)

    说明

    函数触发是分Shard独立进行的, 假设Logstore有10个Shard,在实时处理数据时(触发无延迟),每60秒对应10次函数触发执行。

  • 触发发生延迟(当前处理到的日志服务Shard位置落后于最新写入数据超过10秒):触发器会进行追赶,可能缩短到2秒触发一次,每次处理的数据范围仍是60秒窗口。