故障排查 / 函數執行超時
函數執行超時可能有多種可能,需要根據不同情況進行辨別。
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 秒