gpt4 book ai didi

Scala 应用超出 Heroku 内存配额

转载 作者:行者123 更新时间:2023-12-02 00:09:56 25 4
gpt4 key购买 nike

我在 Heroku 上托管我的移动应用程序的后端。它是用 Scala 编写的,使用 Scalatra 公开 REST API。除此之外,我正在运行一个工作人员来获取数据并将其推送到 MongoHQ 的数据库(使用 casbah)。对于他们两个,我不断收到 R14 (Memory quota exceeded) 错误。在我的本地机器上,worker 消耗的内存不超过 200 - 250 MB,根据 New Relic 监控,Scalatra 应用程序在 Heroku 上仅使用 250 MB。

这些是我的 Heroku 实例上的相关环境变量:

JAVA_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops -javaagent:newrelic/newrelic.jar

JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true

SBT_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops

REPO: /app/.sbt_home/.ivy2/cache

Web 服务甚至还没有收到任何流量,那么为什么 Heroku 会提示内存消耗?

马可

最佳答案

作为实验,尝试将 Scalate 排除在外。理论上,如果您在没有 Scalate 模板的情况下运行(对于此类应用程序,您不需要),您应该能够运行 Scalatra REST API 并在 JVM 中使用大约 64MB。

如果不深入了解一下您的部署,就很难确切知道。但作为一种猜测,Scalate 编译器现在默认捆绑到 Scalatra 的默认 G8 模板中,以便提供预编译 View 以提高生产速度,这可能会让您超出 Heroku 的限制。

可能有一种方法可以让模板预编译在 Heroku 部署过程之外工作,但我对 Heroku 部署或 Scalate 模板编译还不够熟悉,不知道它是如何工作的。如果您使用 WAR 进行部署,模板将已经预编译,并且您不会在第一次启动时产生启动损失。

关于Scala 应用超出 Heroku 内存配额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15945628/

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