Skip to content

문제 해결 / 함수 실행 무응답

함수 실행 무응답에는 여러 가지 가능성이 있을 수 있으므로, 상황에 따라 구분해야 합니다.

구체적인 증상은 다음과 같습니다.

  1. 브라우저에서 API에 접근할 때 오랫동안 로딩 상태에 머무름
  2. curl 방식으로 API를 호출할 때 오랫동안 응답이 없음

이때 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 전체를 재시작하면 이 문제를 해결할 수 있습니다.