Skip to content

经常出现502 #45

Open
Open

Description

@hsiangleev

部署的是最新的代码,但是经常出现502的错误,

bad response status code 502, message: Upstream error: fetch failed, body: {"error":{"message":"Upstream error: fetch failed","type":"proxy_error","input_tokens":0},"retry_after":10}

本轮运行失败OpenAI API error (502): {"message":"Upstream error: fetch failed","type":"proxy_error","param":"","code":null}

日志是这个

[2026-09-16T00:37:36.423Z] [info] Fingerprint generated for key {"keyPrefix":"..."}
[2026-09-16T00:37:37.292Z] [warn] Lifecycle event error {"error":"fetch failed"}
[2026-09-16T00:37:37.293Z] [warn] Fingerprint record error {"error":"fetch failed"}
[2026-09-16T00:37:37.293Z] [info] Fingerprint/lifecycle next refresh {"nextIn":"..."}
[2026-09-16T00:37:37.293Z] [info] Session created {"sessionId":"...","storeSize":1}
[2026-09-16T00:37:41.495Z] [error] Responses handler error {"message":"fetch failed"}
[2026-09-16T00:37:42.216Z] [error] Responses handler error {"message":"fetch failed"}
[2026-09-16T00:37:43.555Z] [error] Responses handler error {"message":"fetch failed"}
[2026-09-16T00:37:45.881Z] [error] Responses handler error {"message":"fetch failed"}
[2026-09-16T00:37:49.926Z] [error] Responses handler error {"message":"fetch failed"}
[2026-09-16T00:37:54.514Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:37:57.948Z] [error] Responses handler error {"message":"fetch failed"}
[2026-09-16T00:37:58.033Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:09.121Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:30.440Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:32.424Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:33.241Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:34.178Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:34.820Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:35.473Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:36.143Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:36.754Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:37.542Z] [error] Upstream error {"message":"fetch failed"}
[2026-09-16T00:38:38.479Z] [error] Upstream error {"message":"fetch failed"}

Activity

  1. MAXeaglet commented on Sep 16, 2026

    @MAXeaglet
    Owner

    会不会是网络问题,有成功过吗

  2. hsiangleev commented on Sep 16, 2026

    @hsiangleev
    Author

    成功过,一个小时大概会出现几次这个错误,但是等一会就好了。
    不确定是不是网络问题,我先测试一下吧。

  3. maple323 commented on Sep 16, 2026

    @maple323

    我也出现了,是什么原因呢,是并发太高了吗,我这样十几分钟了,重启一下又好了

  4. X-233 commented on Sep 16, 2026

    @X-233

    重启就好了,到时候,让AI排除吧

  5. BaiFeng666 commented on Sep 17, 2026

    @BaiFeng666

    +1

  6. Cedric9352 commented on Sep 18, 2026

    @Cedric9352

    +1,我让codex分析过,说是上游返回了terminated

  7. X-233 commented on Sep 18, 2026

    @X-233

    我已经解决了,就是代理问题,直链失败率很高的,我去测试了一下通过率只有 20%,代理通过率100%。设置代理就行了

  8. X-233 commented on Sep 18, 2026

    @X-233

    +1,我让codex分析过,说是上游返回了terminated

    使用代理

  9. MAXeaglet commented on Sep 18, 2026

    @MAXeaglet
    Owner

    顺着「设置代理就行了」这条补充:上游代理支持已经合进 master 了(#32 → 3198dd8,另有一个跟进修复 cce214d)。

    ⚠️ 先说发布状态,免得白折腾:Docker 镜像由 release 分支构建,而 release 目前还没带上这个功能,需要等发版;想立刻用可以直接跑 master(npm start)或自行 build。

    第一步:先确认「设了代理却没效果」这个坑

    Node 原生 fetch 不读 HTTPS_PROXY / HTTP_PROXY。在跑 ccproxy 的机器上执行:

    HTTPS_PROXY=http://127.0.0.1:9 node -e "fetch('https://api.commandcode.ai/').then(r=>console.log('连上了 HTTP',r.status)).catch(e=>console.log('失败',e.message))"
    • 连上了 → 环境变量被完全忽略(Node 18/22 都是这样)。实测:Node 18.19 忽略;Node 24.16 要加 NODE_USE_ENV_PROXY=1 才生效。之前"设了代理但没效果"多半就是这个原因。
    • 失败 → 代理确实生效了。

    第二步:二选一

    1)用内置选项(Node 18+ 即可,不需要 NODE_USE_ENV_PROXY,也不需要透明代理)

    CC_UPSTREAM_PROXY=http://127.0.0.1:7890 npm start
    # 或 config.json: { "upstreamProxy": "http://127.0.0.1:7890" }

    只作用于发往 CC 的请求(/alpha/generate、fingerprint/record、lifecycle-events、/provider/v1/models),不影响本地监听与 /health;实现是零依赖的 CONNECT 隧道,TLS 端到端,代理只转发裸字节、不解密;指纹与 lifecycle 预请求同样走代理(否则同一账号会从两个 IP 注册)。

    2)宿主机层透明代理(Clash TUN / iptables)

    官方镜像是 node:22-alpine,env 变量对它无效,但透明代理一律生效 —— 这是目前镜像用户立刻可用的做法。

    如果换了出口仍然出现 502

    麻烦贴两个东西:客户端完整错误 + 代理日志里对应那一行(Stream error / Upstream error / CC stream error)。

    这类失败目前看到两种形态,都指向出口链路:fetch failed(连接建立阶段被断)与 terminated(响应读到一半被断)。我们正在把 undici 的 cause code(UND_ERR_SOCKET / ECONNRESET / EAI_AGAIN …)打进日志 —— 那一行出来就能直接判定是 DNS、连接被拒、还是被中途掐断,不用再猜。

  10. MAXeaglet commented on Sep 18, 2026

    @MAXeaglet
    Owner

    补一条更新:已经发版了,上面「需要等发版」那句作废。

    • release 分支已更新到与 master 相同的提交(cce214d),GHCR 镜像重新构建完成
    • :release 与 :latest 现在指向同一 digest(amd64 sha256:0c8c5ea8…),构建时间 2026-09-18T08:28:51Z
    • 镜像内 app/proxy.mjs 与 master 逐字节一致(sha256 2ebb3f0c…),已包含 upstreamProxy / CC_UPSTREAM_PROXY
    docker pull ghcr.io/maxeaglet/commandcode-proxy:release
    docker run -d --name cc-proxy -p 3050:3050 -e PORT=3050 \
      -e CC_UPSTREAM_PROXY=http://172.17.0.1:7890 \
      ghcr.io/maxeaglet/commandcode-proxy:release

    ⚠️ 容器里填代理地址要注意:容器内的 127.0.0.1 不是宿主机。Linux 上用 172.17.0.1(docker 网桥网关),或加 --network host 后再用 127.0.0.1。

    配置生效后启动横幅里会显示 "upstreamProxy":"127.0.0.1:7890"(只打 host:port,带账号密码也不会写进口令)。

  11. zhyx1996 commented on Sep 20, 2026

    @zhyx1996

    能不能考虑加到配置文件里?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions