문제 해결 / 함수 실행 무응답
함수 실행 무응답에는 여러 가지 가능성이 있을 수 있으므로, 상황에 따라 구분해야 합니다.
구체적인 증상은 다음과 같습니다.
- 브라우저에서 API에 접근할 때 오랫동안 로딩 상태에 머무름
- curl 방식으로 API를 호출할 때 오랫동안 응답이 없음
이때 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 전체를 재시작하면 이 문제를 해결할 수 있습니다.