【问题标题】:Reducing slug size (or increasing limit) for JDK7 and JRuby减少 JDK7 和 JRuby 的 slug 大小(或增加限制)
【发布时间】:2012-06-03 22:42:39
【问题描述】:

我正在开发使用 JDK7 和 JRuby 1.7.0.preview1 的 Heroku buildpack for JRuby 中的 a fork。好消息是它有效 - 坏消息是蛞蝓非常大。一旦我将 JRuby、JDK 和“Hello, world”Rails 3 应用程序捆绑在一起,部署时压缩的 slug 大小为 98.4 MB。这并不奇怪,因为 JDK 为 129 MB,而 JRuby 为 29 MB(均未压缩)。

由于 Heroku 对 slug 有 100MB 的限制,这让我几乎没有空间进行实际的应用程序开发 - 很容易看出,即使是一个简单的 Rails 应用程序也会让我超过这个限制。

我已经从 JDK 和 JRuby 中删除了尽可能多的明显“可选”的东西(源代码、文档、示例、x86_64 以外的东西的本机库等)。我想知道是否有任何聪明的方法可以将事情从 slug 中移出,进一步减少 JDK 或 JRuby,或者实际上增加允许的 slug 大小。鉴于 Heroku 的 buildpack 支持以及将虚拟机和框架捆绑在 slug 中的实际做法,100MB 的上限比以前低得多。

【问题讨论】:

    标签: heroku jruby java-7


    【解决方案1】:

    这不是我真正的领域,但我认为您可以通过 JDK JAR 并删除大量在服务器上没有意义的东西。我知道您删除了一些文件,但听起来您并没有修剪您保留的任何 JAR。例如,我刚刚登顶,看到了一堆 Swing 和 AWT 类。仅这些就应该为您购买几兆字节。我相信你会比我更清楚还有哪些适合移除的候选者。

    更新:我很好奇,所以我试了一下。通过删除 Swing 和 AWT,我节省了 5.5MB。这似乎是一个不错的开始,而且,大概更熟悉的人可能会很好地知道还有什么可以删除。

    更新 2: 我刚刚通过使用 bzip2 --best 重新压缩(解压缩的)java 存档,又节省了 4.5MB,总共 10MB。这个技巧只为 jruby 存档节省了半兆,但仍然使总数减少了 10.5MB。

    【讨论】:

    • 似乎是一个很好的开始。对这些 JAR 中的任何一个进行黑客攻击会破坏其数字签名吗?还是可以重新签名?
    • @Brad 我实际上对 JAR 签名一无所知;我只是想它是类文件的存档,请随意删除不需要的文件。 {正在尝试...} 我刚刚试了一下,看来你的担心是对的;我遇到了一个奇怪的错误。我用rm jre/lib/ext/ 解决了它,这可能看起来有点过头了,但如果这就是它所需要的,我不知道,我想我不太明白这里的安全模型是什么。您正在分发开源软件,您可以随意修改它。
    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    相关资源
    最近更新 更多