【问题标题】:How to reduce heroku slug size?如何减少heroku slug的大小?
【发布时间】:2011-08-31 11:07:24
【问题描述】:

我的 slug 大小是 89.5MB,非常大。

但是存储库的大小非常小:

$ du -hsc 
8.0M    . 
8.0M    total

在这篇博文之后:http://dazedthots.blogspot.com/2011/07/reducing-slug-size-heroku.html,Heroku 上有一个关于更改 Gemfile 的错误。我的已经改变了好几次,包括 git 依赖项,但现在,唯一的 git 依赖项是“rails_admin”。见下文:

source 'http://rubygems.org'

gem 'rails',      '~> 3.1.0'
gem 'rails-i18n', '~> 0.1.3'
gem 'pg',         '~> 0.11.0'
gem 'rake',       '~> 0.8.7'
gem 'thin', '~> 1.2.11'
gem 'heroku', '~> 2.4.0'
gem 'squeel',     '~> 0.8.6'
gem 'devise', '~> 1.4.2'
gem 'slim-rails',  '~> 0.2.0'
gem 'simple_form', '~> 1.4.2'
gem 'will_paginate', '~> 3.0'
gem 'sunspot_rails', '~> 1.2.1'
gem 'jquery-rails',    '~> 1.0.12'
gem 'modernizr-rails', '~> 2.0.6'
gem 'rails_admin', git: 'https://github.com/sferik/rails_admin.git'
gem 'sass-rails',   '~> 3.1.0'
gem 'coffee-rails', '~> 3.1.0'
gem 'uglifier',     '~> 1.0.0'
gem 'newrelic_rpm'

我已经联系了 Heroku 支持,但直到现在还没有答复?有什么想法吗?

【问题讨论】:

    标签: heroku bundler gemfile


    【解决方案1】:

    最后,3 天后,Heroku 清理了我的缓存。 现在一切都很好,虽然我的 slug 仍然是 54MB,看起来太大了。

    Heroku 确认除了联系他们解决此问题之外没有其他解决方案。希望它会在未来版本的捆绑器中得到解决。

    【讨论】:

    【解决方案2】:

    通过在.slugignore 文件中列出目录,我已经能够在这里和那里修剪几兆字节。在此问题得到解决之前,这可能会帮助您保持在 100mb 的限制之下。

    您可能还想尝试将您的更改推送到没有历史记录的新存储库中,因为看起来 Heroku 正在使用您引用的克隆 git 树的完整大小来惩罚您。

    【讨论】:

    • 我已经部署了一个 .slugignore 文件,但差别可以忽略不计。我试图推送到一个新的存储库,该存储库已将编译的 slug 大小减少到几乎一半。现在是 50MB。这不是一个解决方案,因为我的原始应用程序上有一些付费插件,但它证实 Heroku 的 slug 大小存在问题。
    • 我能想到的唯一另一件事是将您的代码推送到您自己的 gem 存储库中,您可以使用基本身份验证进行密码保护。这应该可以帮助您更好地控制 slug 的大小,同时让您的眼睛远离代码。
    【解决方案3】:

    作为 Heroku 已经在您引用的帖子中承认了问题,我会等待并坐下来,直到 Heroku 将其解决。我认为您已经研究过使用 .slugignore 文件减小 slug 大小的其他一些方法?

    Slug 大小将包括您所有的 gem,因此您使用的 gem 越多,slug 的大小就越大,因为这些天每个 Heroku 应用程序都维护自己的 gem。我没听说过 :git 引用 gems 使用更多空间,但我现在有。

    【讨论】:

    • 我不认为蛞蝓大小包括所有宝石。根据Heroku:“如果可能,请在您的 Gemfile 中按名称引用已发布的 gem,而不是使用 :git 选项从源代码加载它。”。
    • 确实如此,因为我的存储库只有几 Mb,但在 Heroku 上它们大约为 40Mb。唯一会导致这种情况的是捆绑的宝石。
    【解决方案4】:

    为我解决问题的技巧:

    什么有效:我创建了另一个文件夹。我在那个文件夹中搜索 git。然后我删除了 xml 文件中的文件,然后我尝试上传到 Heroku,它成功了。

    【讨论】:

      【解决方案5】:

      和你一样,我的 ruby​​ 存储库只是我的 heroku slug 大小的一小部分。我听从了this heroku guide的建议 通过运行来探索我的 heroku dyno 上未压缩的 slug:

      $ heroku run bash -a [app-name]
      

      我的大部分空间都被 heroku 上 /vendors 下的 gem 源文件占用了。这些源文件不在我的仓库中。我为 Gemfile 依赖项找到了一个 250MB 的二进制文件,我正在替换它。

      【讨论】:

        猜你喜欢
        • 2011-02-24
        • 2021-01-20
        • 2012-01-23
        • 2021-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多