故障排查 / 函式執行超時
函式執行超時可能有多種可能,需要根據不同情況進行辨別。
1. 在 DataFlux Func UI 編輯器中執行耗時過長的函式
為保護系統,對於在 DataFlux Func 編輯器中執行函式,系統會忽略 timeout
配置,耗時限制固定為 45 秒。
當函式執行時間超過耗時限制後,系統會直接 Kill 程序,並丟擲類似如下錯誤:
Text Only | |
---|---|
1 2 3 4 5 6 7 8 |
|
可能原因 | 解決方案 |
---|---|
所執行的函式執行超過 45 秒限制 | 在編輯器中執行函式主要用於開發 / 除錯,應當使用較小的資料集、請求量 請勿直接執行完整長耗時任務 |
2. 函式執行耗時過長導致工作程序被 Kill
為了保護系統,DataFlux Func 對函式執行的最長時間有限制,不允許無限制執行下去。 在超過一定時間後,會直接 Kill 執行程序。
具體表現為:
- 在任務執行的日誌中觀察到產生包含
SoftTimeLimitExceeded
的錯誤,如:
Text Only | |
---|---|
1 2 3 4 |
|
- 呼叫函式 API 返回狀態碼
599
,返回包含EFuncTimeout
(一般也會包含SoftTimeLimitExceeded
資訊)的如下資料:
JSON | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
其中,reqCost
欄位為此函式從開始執行到被 Kill 經過的時間(毫秒)
可能原因及解決方案:
可能原因 | 解決方案 |
---|---|
所執行的函式未指定 timeout 超時引數,但函式執行超過預設超時限制 |
聯絡函式開發者排查錯誤,包括且不限於: 超時引數設定過短 函式內呼叫外部系統響應過慢 |
所執行的函式指定了 timeout 超時引數(秒),且函式執行超時 |
同上 |
函式超時預設為 30 秒,最大設定為 3600 秒