首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减少rake资产中的内存消耗:预编译

减少rake资产中的内存消耗:预编译
EN

Stack Overflow用户
提问于 2016-06-27 22:54:27
回答 2查看 1.9K关注 0票数 21

问题:

在自动构建中执行rake assets:precompile任务时,内存不足。是否有任何策略来执行增量预编译,或者以其他方式执行预编译阶段而不消耗那么多的RAM?该任务的消耗似乎比构建的基线多了850 MB。

上下文

我正在尝试获得一个单独的Docker容器,Bitbucket管道版本的我们的自动构建。应用程序栈包括Rails 4.2.7、PostgreSQL 9.3、Java8、Maven 3.3.9和JRuby 9.1.2.0。我尝试过创建基于Debian和Alpine的映像,但是它对基线内存没有多大影响。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-29 16:03:27

简短回答

使用NodeJS作为预编译的JavaScript解释器(或另一个峰值RAM使用率较低的JavaScript解释器)。

较长答案

就上下文而言,我使用的是NodeJS 4.5.0,与therubyracer v0.12.2和therubyrhino v2.0.4相比

你能增加内存吗?

听起来很傻,但是在使构建过程复杂化之前,看看是否有更多的功能强大的构建机器可用,或者交换空间是否可用(尽管这可能会增加构建时间),这可能是有意义的。

你能转换JavaScript解释器吗?

高峰值内存利用率似乎是瑞比犀牛 (Mozilla的Rhino JavaScript解释器)和热赛车手 (V8 JavaScript解释器)的基本特征。在资产预编译阶段,似乎没有一种有效的方法可以显著降低RAM的消耗量。最可行的路径似乎是预编译构建生命周期之外的资产,并将其缓存到某个地方,这样就可以获取资产而不是预编译的如@user4776684 4776684所示。正如对这个问题的评论所表明的那样,Rails版本和Ruby都有影响,但几乎没有JavaScript解释器那么大。

如果其他一切都失败了

作为@delasJack2k上面提到,如果使用邦德勒,则可以利用并行配置来只对预编译任务调用NodeJS,并保持原始构建相对不受影响。我没有研究这一点,因为切换解释器比较容易,但是虽然我能够用rake和NodeJS预编译资产,但是当涉及rake + therubyrhino调用时,它们似乎并不被视为预编译,因此它们被重新编译。我用一个编程设置的BUNDLE_GEMFILE环境变量来完成这一任务,该变量指向一个完全独立的set文件,它使用了MRI和NodeJS,而不是JRuby和therubyrhino。

票数 4
EN

Stack Overflow用户

发布于 2016-08-15 19:28:51

关于数字海洋上最便宜的水滴,我也有类似的问题。我创建了linux交换分区。也许您的主主机没有交换分区。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38064461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档