起きた現象
EC2サーバー上にセルフホスティングしたDifyにおいて以下のようなエラーが生じる。
Results are not displayed due to timeout.
Please refer to the logs to gather complete results.
解決策
.env
の内容を編集すると可能。
どうやらサーバー内の設定でワークフローの実行時間が長くなるとタイムアウトエラーになってしまうらしい。
やることは 3 つだけ
Dify でワークフローの実行中にタイムアウトが発生してしまう場合、以下の 3 つの手順を行うだけで解決できる可能性が高い。
1. .env
ファイルを開く
まず、.env
ファイルを開く必要がある。以下のコマンドを実行する。
cd ~/dify/docker # docker compose を実行するディレクトリへ移動
nano .env # 環境変数ファイルを編集
このとき、画面上部に ~/dify/docker/.env
と表示されていれば、正しいファイルを開けていることが確認できる。
なお、.envファイルが見つけられない場合には以下を実行してみる
# 1) 隠しファイルを含めて一覧
ls -a ~/dify/docker | grep -E '^\.env$'
# 2) 見つからなければ env_file 指定を探す
grep -nR --max-depth=1 -E 'env_file' ~/dify/docker/docker-compose*.yml
2. タイムアウト関連の設定を追記する
.env
ファイルの一番下に、以下の設定をコピー&ペーストする。そして、保存する。
# --- Dify ワークフロー長時間実行対策 ---
TEXT_GENERATION_TIMEOUT_MS=300000 # 5 分
WORKFLOW_MAX_EXECUTION_TIME=600000 # 10 分
APP_MAX_EXECUTION_TIME=600000 # 10 分
GUNICORN_TIMEOUT=720 # 12 分
NGINX_PROXY_READ_TIMEOUT=3600s
NGINX_PROXY_SEND_TIMEOUT=3600s
NGINX_KEEPALIVE_TIMEOUT=3600s
すでに同じような項目が存在する場合は、上書きすること。また、重複して記載しないよう注意が必要である。
3. Docker コンテナを再起動する
設定を反映させるためには、Docker コンテナを再起動する必要がある。以下のコマンドを使用する。
docker compose down && docker compose up -d
その後、次のコマンドで全てのサービスが正常に起動しているかを確認する。
docker compose ps
各サービスのステータスが healthy
と表示されていれば、再起動は正常に完了している。
補足
.env
が複数あった場合でも、Compose を叩いたディレクトリ直下の.env
が最優先 です。- ほかの階層に
.env
があって紛らわしい場合は、リネームするか削除して一本化するとトラブルを防げます。