Skip to content

附件文件最大 10MB - #112

Merged
JunieXD merged 1 commit into
mainfrom
attachment-size-limit
Nov 15, 2026
Merged

JunieXD merged 1 commit into
mainfrom
attachment-size-limit

Conversation

@JunieXD

@JunieXD JunieXD commented Nov 15, 2026

Copy link
Copy Markdown
Contributor

关联

部署内测前的准备,见路线图 #2。

改了什么

很大的附件会撑满网站 512MB 的内存,也占库和备份的空间;抓取节点原来要把整个文件下载下来才看大小,项目没截止时每天重抓,又要再下一遍,对源站也不友好。

  • 抓取节点下载附件读到 10MB 就停(Fetcher.get 改成流式读,带上限),照样列出名称和网址,文字留空,不上传
  • 网站上传附件的接口只收 10MB 以内的文件,其他抓取节点接口照旧 50MB
  • 用浏览器抓的网站,附件由 Playwright 整个读完,它没有限制大小的选项,靠超时限住;超过 10MB 的同样不存
  • 总体设计 §7、§16 和接口文档写上这个上限

怎么验证的

  • crawler/ 的 ./check.sh、web/ 的 pnpm check 全部通过
  • 新测试:流式下载超过上限就不再往下读,按实际读了多少字节判断
  • 用临时测试(已删)实测网站:恰好 10MB 的文件过了大小检查(快照不存在,回 404),多 1 字节回 413
  • 另请人逐文件审过,以下几点判断后不改:
    • 浏览器下载不受上限约束:Playwright 做不到,写进了文档
    • 不带 Content-Length 的上传会先按 50MB 缓冲:线上经过 OpenResty,它收完整个请求再带上 Content-Length 转给网站,抓取节点发的也带
    • gzip 压缩的响应一块解压后可能超过上限:最多一块网络数据解压出的量,抓取节点有 2GB 内存

影响

  • 接口:PUT /crawler/snapshots/{id}/attachments/{position} 超过 10MB 回 413
  • 抓取节点:超过 10MB 的附件不下载完、不上传
  • 表结构、MCP 工具、已有数据:无

很大的附件会撑满网站 512MB 的内存,也占库和备份的空间;抓取节点原来要把整个文件下载下来才看大小,每天重抓时还要再下一遍,对源站也不友好。

- 抓取节点下载附件读到 10MB 就停,照样列出名称和网址,文字留空
- 网站上传附件的接口只收 10MB 以内的文件,其他接口照旧 50MB
- 浏览器抓的网站由 Playwright 整个读完,靠它的超时限住
@JunieXD
JunieXD merged commit d48b70c into main Nov 15, 2026
2 checks passed
@JunieXD
JunieXD deleted the attachment-size-limit branch November 15, 2026 04:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant