ComfyUIがReconnectingでキューが進まない原因と対処

ComfyUIがReconnectingでキューが進まない原因と対処

※本記事にはプロモーション(広告・アフィリエイトリンク)を含みます。

ComfyUIで生成を実行したのに、画面右上が「Reconnecting」と点滅したまま、キューに積んだジョブが進まない——。この状態は「ComfyUIが壊れた」わけではなく、ブラウザとバックエンドをつなぐ接続が切れているサインであることがほとんどです。この記事では、切れている場所を上から順に切り分け、原因別に対処する手順をまとめます。ローカル実行でもトンネル越しでも使える切り分けの順番です。

「Reconnecting」が何を意味するか

ComfyUIのWeb UIは、ブラウザとバックエンド(main.pyが動いているプロセス)の間をWebSocketでつないでいます。進捗バーやプレビュー、キューの状態はこのWebSocket経由で流れてきます。だから「Reconnecting」は、このWebSocketが切れて再接続を試みている状態を指します。

原因は次の3層のどこかにあります。切り分けはこの順で行うと速いです。

層 症状の出方 最初に見る場所
バックエンド本体 キューが進まない・落ちる 起動したターミナルのログ
ブラウザ UIだけ切れる、実行は進む DevToolsのConsole/Network
間のネットワーク localhost直では切れない プロキシ/トンネルの設定

重要なのは、一次情報はブラウザではなくComfyUIを起動したターミナルにあるという点です。ブラウザのポップアップだけ見ていても原因はわかりません。

原因1:バックエンドが落ちている(キューが進まない)

キューが1件も進まず、しばらくすると「Reconnecting」になるなら、まずバックエンドの停止を疑います。ブラウザだけ生きていてバックエンドが死ぬと、この見え方になります。

起動したターミナルを見て、Traceback やエラーが出ていないか確認します。画像生成でよくあるのはVRAM不足(OOM)です。

torch.cuda.OutOfMemoryError: CUDA out of memory.

このメッセージが出ていたら、VRAMが足りていません。GPUの使用状況を確認します。

nvidia-smi

GPUが1枚しかない環境で、ComfyUIと他の生成ツール(Stable Diffusion WebUIやOllamaなど)を同時に立ち上げていると、VRAMを奪い合ってOOMしやすくなります。使う前にどのプロセスがVRAMを掴んでいるかをnvidia-smiで確認しておくと切り分けが速くなります。GPU共有時の挙動はOllamaが遅い原因はCPU fallback|num_gpuでVRAM分割を制御するやForge vs 通常WebUI:RTX 3060 12GB VRAM比較でも触れています。

対処は次のとおりです。

  1. 他のGPUプロセスを終了させ、VRAMを空ける
  2. 生成解像度やバッチサイズを下げる
  3. ComfyUIをVRAM節約オプションで起動する(--lowvram など。公式にVRAM使用を抑える起動オプションが用意されています)

いったんバックエンドが落ちると、ブラウザに残ったキューは進みません。バックエンドを再起動すれば、メモリ上に積まれていたキューはクリアされ、あらためて実行し直すことになります。

原因2:ブラウザ側でWebSocketが切れる

バックエンドは生きている(ターミナルにエラーがなく、生成自体は進んでいる)のにUIだけ「Reconnecting」になる場合は、ブラウザ側を疑います。

よくあるのは次の状況です。

  • タブをバックグラウンドに回して、ブラウザがタブをスロットリングした
  • 別端末(スマホなど)やWi-Fi経由でアクセスしていて、接続が不安定になった
  • スリープ復帰でWebSocketが切れたまま

確認と対処の手順です。

  1. ブラウザのDevToolsを開き、Networkタブで「WS」を選ぶ
  2. ws(/ws)の接続が張れているか、ステータスが101かを見る
  3. 切れていたらページをハードリロード(Ctrl+Shift+R / MacはCmd+Shift+R)
  4. 長時間の生成中はタブを前面に置き、端末をスリープさせない

原因3:プロキシ/トンネル越しで切れる

localhost:8188に直接つなぐと切れないのに、リバースプロキシやトンネル経由だと切れる場合は、間のネットワークがWebSocketをうまく通せていません。WebSocketはHTTPからのアップグレードが必要で、アイドルタイムアウトも効くため、通常のHTTPプロキシ設定のままだと途切れやすいです。

nginxを挟むなら、アップグレードヘッダの転送と読み取りタイムアウトの延長が要ります。

location / {
    proxy_pass http://127.0.0.1:8188;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 3600s;
}

Cloudflare Tunnelやリバースプロキシを挟む構成では、WebSocketがアイドルタイムアウトで切れることがあると考えられます。切り分けとしては、まず同じマシンのlocalhost:8188で開いて切れないかを確認するのが確実です。そこで切れないなら、原因は間のネットワーク側にあると判断できます(タイムアウトの具体値は使うプロキシやトンネルによって異なります)。

再発を防ぐ起動と運用

バックエンドがターミナルを閉じたタイミングで落ちると、原因3のように見えることがあります。ログを残しつつ確実に切り離して常駐させると、後から原因を追いやすくなります。

cd ~/ComfyUI && setsid nohup venv/bin/python main.py --port 8188 \
  > /tmp/comfy_start.log 2>&1 < /dev/null & disown

こうしておけば、「Reconnecting」が出たときに/tmp/comfy_start.logを見るだけで、バックエンドが落ちたのか動き続けているのかを判断できます。

まとめ

「Reconnecting」でキューが進まないときは、原因を推測で潰す前にまずComfyUIを起動したターミナルのログを開くことから始めてください。そこにOOMなどのエラーが出ていればバックエンド側、何も出ていなければブラウザかネットワーク側、と一手で切り分けられます。次にやることは1つ——ターミナルを最前面に出して、直近のログを確認することです。

よくある質問

ComfyUIのキューが進まないのはなぜですか?

多くはバックエンド(main.py)がVRAM不足などで落ちているためです。ブラウザだけ生きているとキューが残ったまま進みません。起動したターミナルのログを確認し、バックエンドを再起動するとクリアされます。

localhostでは切れないのにトンネル経由だと切れます

WebSocketがプロキシやトンネルのアイドルタイムアウトで切れている可能性があります。nginxならUpgrade/Connectionヘッダの転送とproxy_read_timeoutの延長を設定します。タイムアウト値は環境によって異なります。

Reconnectingとは何を意味しますか?

ブラウザとComfyUIバックエンドをつなぐWebSocketが切れて再接続を試みている状態です。UIだけ切れて生成は進む場合はブラウザ側、キューごと止まる場合はバックエンド側を疑います。