Linux 内核官方 Git 仓库 git.kernel.org 近日披露了一组反常数据:在 5 个地理分布节点上,约有 14 个 CPU 核心同时用于把 Git 提交渲染成 HTML,服务对象主要是滥用型爬虫。按 CPU 消耗计算,这类抓取已经超过 Git 克隆在内的全部正常访问。

这件事的关键不在“14 个核心”这个数字本身。它暴露的是开放代码基础设施的一笔隐性账单:网页越适合索引,越容易被自动化程序反复读取;而渲染、带宽和运维成本,通常由提供公共服务的一方承担。

git.kernel.org:提交页面的渲染开销压过了 Git 克隆

Konstantin Ryabitsev 在一篇题为 《Creepy crawlies》 的文章中,谈到了 git.kernel.org 的运行情况。git.kernel.org 是 Linux 内核官方 Git 仓库,承担内核源代码和提交历史的公开访问。

他的判断很具体:在 5 个地理分布节点中,任何时点大约都有 14 个 CPU 核心“什么也不做”,只是在为爬虫渲染 Git 提交页面的 HTML。这里说的是观察到的 CPU 占用,不是全站总算力,也不是服务器已经濒临宕机。

更反常的地方在于访问类型的差异:

访问方式主要用途典型成本
Git clone开发者、镜像站获取仓库数据传输 Git 对象,通常不需要逐页生成 HTML
人类浏览提交页面查看 diff、提交说明和文件变化需要网页渲染,但请求量相对有限
自动抓取提交 HTML建立索引、复制页面或处理数据反复触发服务端渲染,成本可能快速累积

这和“爬虫占了不少网页流量”不是一回事。Ryabitsev 描述的是:爬虫造成的提交页面渲染成本,已经高于包括 Git clone 在内的其他合法访问。换句话说,服务端最忙的部分,可能不是开发者真正使用仓库的方式。

文章没有公布爬虫的来源、身份和用途。它也没有说明流量增长了多少、14 个核心占整个集群的比例,或者最终多花了多少钱。把这件事直接归因于 AI 训练公司,甚至据此宣称 Linux 项目遭遇运行危机,都超出了现有材料能够支持的范围。

开放代码站点很难用“一刀切”解决抓取问题

对代码托管服务来说,Git 协议和网页访问本来就是两套不同的路径。维护者可以限制某些网页请求,却不能轻易把搜索引擎、镜像站、发行版打包系统和普通开发者混在一起封掉。

robots.txt 只能表达站点意愿,不能约束不遵守规则的程序。限流和封禁更有效,却会遇到几个现实问题:

  • 搜索索引需要读取公开提交页面;
  • 镜像站可能从网页或接口补齐元数据;
  • 企业内部工具和 CI 系统也可能使用自动化请求;
  • 公共仓库往往不想为了防滥用而增加登录门槛。

GitHub、GitLab 等代码托管平台通常也会把网页浏览、API 调用和仓库克隆分开管理。这种分层能帮助运营者识别访问类型,却不能消除一个基础矛盾:只要 HTML 页面公开、结构稳定、容易批量访问,服务端就可能替抓取方承担解析和渲染费用。

因此,真正可行的方向通常不是单独加一条封禁规则,而是让不同访问方式付出不同成本。比如,为机器读取提供更适合的原始数据接口;对提交页面设置更细的缓存和请求频率控制;对异常客户端要求验证;把高成本渲染从主服务节点隔离出去。

这些措施都有代价。缓存可能延迟页面更新,验证可能误伤无头浏览器和自动化工具,接口调整也会影响已有镜像脚本。开放基础设施的难处,正在于它必须同时服务“想看一页提交的人”和“需要同步整个仓库的机器”。

维护者和数据网站开发者会先遇到预算问题

这件事最直接影响的,是两类运营者。

对 Linux 这类公共代码基础设施的维护者而言,接下来要看的不是单次流量峰值,而是请求是否集中在少数 URL、是否绕过缓存、是否持续触发昂贵的 HTML 渲染。若确认是固定模式的滥用抓取,优先处理的可能是提交页的缓存、速率限制和机器可读接口,而不是立即封掉所有自动化访问。

对运营 Datasette 这类高页面基数数据网站的开发者,风险更容易被低估。一个数据库发布成数万甚至数百万个可索引页面后,单个页面成本看起来很低,批量抓取就可能把 CPU 和带宽预算推到另一档。用户看到的只是“页面能不能打开”,运营者还要承担每次查询、模板渲染、排序和分页的服务器成本。

这会改变一些实际决策:

  • 小项目不必因为一次爬虫异常就立刻迁移平台,但应记录按 User-Agent、IP、路径和响应时间划分的资源消耗;
  • 页面规模较大的项目,最好把浏览页面和批量导出分开设计,给机器使用 CSV、JSON 或数据库快照等更低成本路径;
  • 如果托管费用已经主要来自自动化请求,团队需要重新评估是否继续提供全部页面的匿名实时渲染,而不是只盯着访问量增长。

对普通开发者来说,短期内通常不会因为这条消息改变 Git clone 或浏览 Linux 提交的习惯。真正可能变化的是公共站点的访问策略:高频匿名请求会更容易遇到限速,镜像和内部工具也可能需要改用官方推荐的 Git 或 API 路径。

目前最值得观察的变量有三个:git.kernel.org 是否公开更完整的流量来源和资源占比;爬虫是否遵守站点规则;运营者最终采用的是缓存、接口分流还是访问验证。只有这些信息补齐后,才能判断这是一轮可控的运维优化,还是开放代码服务长期成本结构已经发生了变化。