Heroku:编译后的Slug大小过大。

9

我已经花了半天时间来调试Heroku错误,因为我无法将代码推送到我的暂存服务器,由于slug编译错误:

Compiled slug size: 320.5MB is too large (max is 300MB).

我已经将所有资产迁移到了AWS3,并创建了一个包含以下信息的.slugignore文件:

*.psd
*.pdf
test
spec
features
doc
public

我可以使用哪些其他策略?奇怪的是,据我所知,代码与生产服务器相同,而且我在推送到生产服务器时没有收到任何错误信息。


生产服务器也在Heroku上吗? - Robert Moskal
2
你尝试过使用https://github.com/heroku/heroku-repo插件吗?purge_cache和gc命令可能有助于减小slug的大小。 - Lukas Eklund
你的Gemfile里有很多只在staging环境下启用的gem吗?即使只有几个额外的gems(与生产环境相比),也可能会使你编译后的slug大小超过限制。 - tokoph
@tokoph 我没有为暂存指定任何宝石。Lukas- 我现在正在尝试,如果有效我会告诉你的。 - scientiffic
@LukasEklund 那对我来说似乎起作用了,谢谢!如果您将其添加为答案,我会将其标记为正确的。 - scientiffic
显示剩余2条评论
8个回答

20

在您添加 .slugignore 文件之前,您可能已经将一些大文件添加到 git 库中,现在它们可能位于 slug 缓存中或者作为 git 引用存在。 git-repo 插件 有命令来解决这些问题:

$ heroku repo:gc -a appname

将在您的代码库上运行git gc --aggressive命令。

$ heroku repo:purge_cache -a appname

这将删除构建缓存,然后您可能需要运行以重新构建应用程序。

$ heroku repo:rebuild -a appname

6
“repo:rebuild”似乎已经消失了,不过“reset”还存在。 - jsharpe
2
如果您尚未安装插件,请确保首先运行 heroku plugins:install heroku-repo :) - dcts

8

这对我有用

$ heroku repo:gc -a appname

将在您的仓库上运行git gc --aggressive。

$ heroku repo:purge_cache -a appname

然后我手动将代码推送到Heroku。

$ git push heroku-prod master

0

0

我知道这是针对Ruby on Rails的,但是对于我的项目,我有许多Python依赖项,这极大地增加了slugsize。

因此,我认为您可以将开发和生产(Heroku)的依赖项分开。


0

Slug大小

您的Slug大小将在成功编译后的压缩消息之后显示。最大允许的Slug大小(压缩后)为500 MB。

您可以使用heroku run bash命令检查Slug的提取内容,并使用lsdu等命令。

Slug大小因所使用的语言和框架、添加的依赖项数量以及其他特定于您的应用程序的因素而异。较小的Slug可以更快地传输到动态管理器,从而实现更即时的扩展。您应该尽量保持Slug尽可能小和灵活。

以下是一些减小Slug大小的技巧:

  1. 将大型资产如PDF或音频文件移动到资产存储
  2. 通过.slugignore排除不需要的依赖关系和文件
  3. 清除构建缓存

0
这对我有用: $ heroku repo:gc -a appname $ heroku repo:purge_cache -a appname $ heroku repo:reset -a appname

0

我也遇到了同样的错误,通过在 requirement.txt 中删除不必要的依赖项解决了问题。因此,请尝试删除一些在您的应用程序中未使用的依赖项。 希望能有所帮助!


-1

我通过运行git gc来解决了这个问题。


1
...对于我的一个应用程序。另一个需要@Lukas Eklund的答案。 - Choylton B. Higginbottom
1
这并没有提供问题的答案。如果您想对作者进行批评或请求澄清,请在他们的帖子下留言。 - NM Pennypacker
@NickM,我采用了与之前回答者不同的方法。我已经更改了帖子的措辞以反映这一点。感谢您的提醒。 - Choylton B. Higginbottom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接