我在 Heroku 上托管我的移动应用程序的后端。它是用 Scala 编写的,使用 Scalatra 来公开 REST API。除此之外,我正在运行一个工作程序,它获取数据并将其推送到 MongoHQ 的数据库(使用 casbah)。对于他们两个,我不断收到R14(超出内存配额)错误。在我的本地机器上,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
回购:/app/.sbt_home/.ivy2/cache
Web 服务甚至还没有收到任何流量,那么为什么 Heroku 会抱怨内存消耗呢?
马可