Skip to content

开源前必须解决:后端无限流保护,并发 2~3 即崩溃 #2

Description

@TeddyCzy

问题

对后端 API /api/interview 做梯度压测,发现并发超过 2~3 就大面积失败,且没有任何限流保护。开源后所有人都能调用,这会直接导致体验崩溃和账单风险。

压测结果

单次调用正常(约 5 秒返回),但并发上升后迅速崩溃:

并发 成功 失败 (5xx)
1 1 0
5 2 3
10 2 8
20 0 20
40 0 40

关键发现

  1. 扛不住并发:单人使用没问题,但几个人同时用就大面积报错。
  2. 崩的是上游 AI,不是 Worker:失败响应为 502 {"error":"Interview service request failed"},这是 Worker 在上游 AI 调用失败时返回的。真正瓶颈是 AI API Key 的速率限制被打满。「双模型草拟 + 综合」一次请求要调多次 AI,更容易触顶。
  3. 完全没有限流保护:全程 0 个 429。不是「主动保护自己」,而是「被动崩溃」。
  4. API 完全开放:CORS 只限制了浏览器来源(ainancool.github.io),但脚本/curl 可无视 CORS 直接调用——已用伪造 Origin 验证成功返回。任何人可无限调用,成本由维护者承担。

复现

curl -s -X POST "https://<worker-domain>/api/interview" \
  -H "Content-Type: application/json" \
  -d '{"mode":"start","config":{"company":"测试","position":"测试","jd":"测试","roundInfo":"","persona":"formal"},"history":[]}'

并发发起 5+ 个上述请求即可观察到 502。

建议(均需 Worker 代码权限)

  • 省钱防刷:加人机验证(如 Cloudflare Turnstile)+ 基于 IP 的限流,超限返回 429 而非崩溃。
  • 扛并发:对上游 AI 调用加排队 / 重试 / 退避,或更换更高配额的 Key。
  • 收紧 CORS + 服务端校验:CORS 仅浏览器有效,需在 Worker 端做真正的来源/凭证校验。

前置阻塞

以上均需修改 Cloudflare Worker 代码。

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