11

Heroku アプリで壁にぶつかり始めています。

スラッグ サイズ、re: 画像、PDF、およびその他のマテリアルに関する通常の問題はよく認識していますが、問題は、bower またはビルド パックによって持ち込まれた他のアセットに関係している可能性があります。

https://devcenter.heroku.com/articles/slug-compiler 複数のデプロイ後の Heroku Slug サイズ

私の Heroku コンパイル済みスラッグは次のようになります。

$ du -h --max-depth=1

4.0K    ./.bower-tmp
30M ./tmp
24K ./features
236K    ./config
195M    ./public
4.0K    ./log
34M ./bin
792K    ./db
355M    ./vendor
8.0K    ./.heroku
22M ./app
64K ./lib
8.0K    ./.bundle
136K    ./.bower-registry
22M ./.bower-cache
24M ./node_modules
12K ./.profile.d

圧倒的に大きいのは Vendor (355M) ですが、私のローカルの vendor フォルダーはパブリック (195M) と同様に実際には空です。

しかし、heroku では次のようになります。

40M vendor/ruby-2.0.0
21M vendor/node
32K vendor/heroku
12K vendor/assets
103M vendor/jvm
192M vendor/bundle

195M public/assets (bower bloat?)

私が推測しているのは、bower および PDF 生成用のいくつかのビルド パックの 1 つです。

https://github.com/heroku/heroku-buildpack-nodejs
https://github.com/heroku/heroku-buildpack-ruby
https://github.com/razorfly/wkhtmltopdf-buildpack

私のアプリ自体は 22M で無駄がないように見えますが、現在の heroku SLUG は 298.4MB です! また、vendor ディレクトリだけではdu. 適切な展開戦略 (/スラッグ ダイエット) がどのようなものであるべきかはわかりませんが、どんなアイデアでも大歓迎です。

アップデート:

私はまた、私が読んだものからスラッグを再構築しようとしましたが、他の人にとってはうまくいきましたが、効果はありませんでした. コンパイル後のスラッグサイズは同じままでした。

heroku plugins:install https://github.com/heroku/heroku-repo.git
heroku repo:rebuild -a appname

ビルドの要点: https://gist.github.com/holden/b4721fc798bdaddf52c6

更新 2 (drorb によって提示された優れたアイデアに従った後)

12K ./.profile.d
21M ./app
4.0K    ./log
812K    ./db
8.0K    ./.heroku
236K    ./config
195M    ./public
19M ./.bower-cache
60K ./lib
253M    ./vendor
4.0K    ./.bower-tmp
128K    ./.bower-registry
34M ./bin
30M ./tmp
24M ./node_modules
24K ./features
8.0K    ./.bundle

ベンダー

12K vendor/assets
193M    vendor/bundle
21M vendor/node
32K vendor/heroku
40M vendor/ruby-2.0.0

パブリック/アセット (非常に長い)

https://gist.github.com/holden/ee67918c79dd3d197a6b

4

3 に答える 3

4

サイズvendor/jvmは103Mです。JRuby を使用していないので、yui-compressor gem を使用していることが唯一の理由です。heroku-buildpack-rubyを見ると、この場合は JVM がインストールされているようです。

def post_bundler
  if bundler.has_gem?('yui-compressor') && !ruby_version.jruby?
    install_jvm(true)
    ENV["PATH"] += ":bin"
  end
end

yui-compressor の使用を避けることができれば、スラッグ サイズを 103M 節約できるはずです。

于 2014-12-16T20:58:14.877 に答える
1

問題の一部は、Gemfile 内の Git リポジトリを指している可能性があります。ある時点で、リリースされていない Rails コミットを指定する必要があり、リリースされたバージョンを指定するよりも 100 MB を超えるスラッグ サイズが追加されました。

于 2014-12-15T22:39:49.060 に答える