跳轉至

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

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

具體表現為:

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