コンテンツにスキップ

トラブルシューティング / 関数実行が応答しない

関数の実行が応答しない場合、考えられる原因は複数あり、状況に応じて切り分ける必要があります。

具体的には、以下のような症状が現れます:

  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 全体を再起動すれば、この問題を解決できます。