gpt4 book ai didi

scala - SBT 在 ram 用完时被杀死

转载 作者:行者123 更新时间:2023-12-02 18:22:44 25 4
gpt4 key购买 nike

我试图在具有 800MB RAM 的 docker 容器中运行我的 scala 应用程序( docker run -m=800m mindlevel ),但它在编译完成之前就被杀死了。

[info] Compiling 10 Scala sources to /root/mindlevel-backend/target/scala-2.12/classes...
[info] 'compiler-interface' not yet compiled for Scala 2.12.1. Compiling...
[info] Compilation completed in 8.631 s
/usr/local/sbt/bin/sbt-launch-lib.bash: line 58: 57 Killed "$@"

我试图通过以下方式限制 SBT 堆:
CMD ["sbt", "-mem", "700", "run"]

但它仍然在同一个地方被杀死。
对 docker 容器没有任何限制,它运行良好。
在 EC2 微型实例(1GB RAM)中运行它时,它也会崩溃,无论是否受 SBT 和 Docker 的限制。

是否有我遗漏的一些限制?

最佳答案

为了让它以小于 1GB 的堆运行,我用 sbt assembly 预编译了该项目这使 jar 与您的项目和所有依赖项打包在一起。

通过添加安装它:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")

project/assembly.sbt
然后用 sbt assembly 生成 jar这会将 jar 放在 ./target/scala-<VERSION>/<PROJECT>-assembly-1.0.jar
然后只需使用以下命令运行您的项目:
scala target/scala-<VERSION>/<PROJECT>-assembly-1.0.jar

由于现在在低内存实例上不需要编译步骤,即使它的内存少于推荐的内存,许多项目也可以运行。

关于scala - SBT 在 ram 用完时被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45705660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com