You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku编译Slug体积过大但无法定位大文件问题求助

Heroku Slug过大排查与体积缩减方案

为什么容器内/app显示空间小?

Heroku的slug是构建阶段生成的压缩包,包含所有构建产物、依赖、代码等;而heroku run bash进入的是运行时容器,部分构建过程中的临时文件、缓存甚至依赖可能被清理或未挂载到/app目录,所以两者的文件结构和大小差异很大,不能用运行时容器的du结果判断slug的实际构成。

定位slug内大文件的方法

  • 安装Heroku slug分析插件:
    heroku plugins:install heroku-slug-size
    heroku slug-size -a pitchcast
    
    这个命令会列出slug内各目录/文件的大小占比,直接定位大文件位置。
  • 本地模拟构建:在本地项目目录下,执行heroku build(或手动模拟pip安装依赖的过程),然后用du -ha查看本地生成的构建文件,排查大文件。
  • 查看构建日志:运行heroku logs --tail -a pitchcast,找构建过程中被添加到slug的大文件记录,比如依赖包下载、静态文件打包的日志。

体积缩减实操方法

  • 精简依赖:
    • requirements.txt只保留生产环境必要依赖,开发依赖(如pytest、black)移到requirements-dev.txt,构建时只安装生产依赖。
    • 安装依赖时添加--no-cache-dir参数,避免缓存文件被打包进slug:
      pip install --no-cache-dir -r requirements.txt
      
  • 配置.slugignore文件:在项目根目录创建该文件,添加需要排除的路径,比如:
    .git/
    __pycache__/
    tests/
    *.log
    data/
    venv/
    node_modules/
    
  • 清理构建临时文件:在Heroku的构建脚本(如Procfile或app.json的build命令)中添加清理步骤,比如:
    pip cache purge && rm -rf /tmp/*
    
  • 拆分大资源:如果有大模型、数据集或静态文件,不要打包进slug,改用外部存储服务,运行时通过代码动态下载加载。
  • 优化buildpack:使用官方Python buildpack的优化选项,或避免使用多余的buildpack,减少不必要的构建产物。

内容的提问来源于stack exchange,提问作者dfried

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:40:33