跳转至

故障排查 / 函数执行无响应

函数执行无响应可能有多种可能,需要根据不同情况进行辨别

具体表现为:

  1. 浏览器访问接口时,长时间处于加载中状态
  2. curl 方式调用接口时,长时间没有任何响应

此时,需要在 DataFlux Func 中写一个测试函数,并将其配置为「授权链接」,来帮助判断原因。

测试函数如下:

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 即可解决此问题。