跳轉到

故障排查 / 函式執行無響應

函式執行無響應可能有多種可能,需要根據不同情況進行辨別

具體表現為:

  1. 瀏覽器訪問介面時,長時間處於載入中狀態
  2. curl 方式呼叫介面時,長時間沒有任何響應

此時,需要在 DataFlux Func 中寫一個測試函式,並將其配置為「函式 API」,來幫助判斷原因。

測試函式如下:

Python
1
2
3
@DFF.API('Test Func')
def test_func():
    return 'OK'

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 即可解決此問題。