全部產品
Search
文件中心

Function Compute:為什麼SLS觸發器觸發函數執行的頻次有時高於預期?

更新時間:Jul 06, 2024

Log ServiceSLS的每個Shard在有新的資料寫入的情況下都會觸發函數執行,所以您看到的觸發頻次是一個Logstore整體的觸發次數。同時當觸發發生延遲時觸發器會追趕資料,可能會縮短觸發間隔。

問題現象

SLS觸發器觸發函數執行的頻次有時高於預期的觸發頻次。

問題原因

每個Shard是單獨觸發的,您看到的可能是一個Logstore整體觸發次數很多,但每個Shard即時觸發時間是符合間隔的。

單個Shard的觸發間隔和每次處理的資料範圍相同(時間區間)。觸發間隔在函數執行時分如下兩種情況,假設觸發間隔為60秒。

  • 觸發沒有延遲:按照設定周期觸發,每60秒觸發一次,處理的資料範圍為 [now -60s, now)

    說明

    函數觸發是分Shard獨立進行的, 假設Logstore有10個Shard,在即時處理資料時(觸發無延遲),每60秒對應10次函數觸發執行。

  • 觸發發生延遲(當前處理到的Log ServiceShard位置落後於最新寫入資料超過10秒):觸發器會進行追趕,可能縮短到2秒觸發一次,每次處理的資料範圍仍是60秒視窗。