故障排查 / 函式執行無響應
函式執行無響應可能有多種可能,需要根據不同情況進行辨別
具體表現為:
- 瀏覽器訪問介面時,長時間處於載入中狀態
- curl 方式呼叫介面時,長時間沒有任何響應
此時,需要在 DataFlux Func 中寫一個測試函式,並將其配置為「函式 API」,來幫助判斷原因。
測試函式如下:
Python | |
---|---|
1 2 3 |
|
1. 測試函式正常
可能原因及解決方案:
可能原因 | 解決方案 |
---|---|
所呼叫函式確實需要執行很長時間 | 聯絡函式開發者排查問題 |
2. 無法釋出測試函式、或呼叫測試函式無響應
可能原因及解決方案:
可能原因 | 解決方案 |
---|---|
存在佇列阻塞 | 前往「關於 / 獲取系統報告 / 清空工作佇列」 |
Redis 連線存在問題 | 排查 Redis 連線配置是否正確並重啟整個 DataFlux Func |
關於「Redis 連線存在問題」
在 k8s 中部署 DataFlux Func 的場景下,如果遇到 k8s 叢集崩潰重啟或 Redis Pod 崩潰重啟,但 DataFlux Func 本身並未重啟時,可能會導致所有函式呼叫都無響應。
這可能是由於 k8s 叢集或 Redis Pod 重啟後,DataFlux Func 與 Redis 的舊連線並未關閉,或者 DataFlux Func 無法得知 Redis 連線已斷開,從而導致 DataFlux Func 任務程序始終在等待來自 Redis 的訊息但又永遠無法正常通訊。
此時,在保證 Redis 已經正常執行的前提下,重啟整個 DataFlux Func 即可解決此問題。