【问题标题】:Error R14 (Memory quota exceeded) Jhipster with EHCache on Heroku错误 R14(超出内存配额)Jhipster 与 Heroku 上的 EHCache
【发布时间】:2018-10-03 05:49:23
【问题描述】:

我在 heroku 上有一个 jhipster 生成的应用程序,自第一次部署以来,没有做任何修改,我遇到了经典的错误 R14(超出内存配额)。经过多次调查,我仍然无法解决此问题。现在我有300个用户,应用程序的使用非常基本,但我仍然想摆脱这个错误。到目前为止我做了什么:

1- set -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap on the JAVA-TOOLS options on heroku

2- 我还想设置 -Xmx300m ,但考虑到 heroku 已经应用 -Xmx256m 的事实,我认为不需要重置此值。

我读过的最后一个 cmets 指出我要删除缓存的使用,我认为这会降低应用程序的性能,因为所有 sql 查询都将转到数据库。我正在使用 EHCache 作为本地缓存,你们有没有人通过删除或重新配置 EHCAche 解决了这种情况?或者有什么建议可以解决这种情况?

我的应用程序从未崩溃过,但我担心性能会随着时间的推移而下降。

【问题讨论】:

  • 我不会担心的。几年来,我在 Heroku 上安装了 JHipster 应用程序来解决这个问题。它似乎没有任何影响。
  • 感谢@MattRaible,但您不认为虚拟机可以交换吗?我的意思是,这就是 heroku 所说的,当应用程序出现此错误时会发生这种情况

标签: heroku jhipster ehcache


【解决方案1】:

尝试使用这些 JAVA_OPTS:

-Xmx256m -Xss512k -XX:CICompilerCount=2 -XX:ReservedCodeCacheSize=50m -XX:MaxMetaspaceSize=80m -XX:ParallelGCThreads=3 -Dfile.encoding=UTF-8

这些 Spring 选择:

--server.undertow.io-threads=1

这类似于我们为jhipster-registry 找到的理想配置。这个想法是减少线程的数量(从而减少线程堆栈的内存)并减少其他堆外内存。

【讨论】:

  • 我没有使用所有这些功能,因为我之前想了解它们,所以我使用了 JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -Dfile.encoding=UTF-8 -Xmx256m -Xss512k -XX:+ UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxMetaspaceSize=80m 而且应用没有启动,有OutOfMemoryError,估计是元空间太小了。
  • 尝试增加元空间直到它起作用。它主要取决于类数,所以应该是一致的
  • 我不再面临这个问题了,但我不知道这是否是 Heroku 方面的更改,或者我在应用程序中所做的一些改进,不过,我将 JAVA_TOOL_OPTIONS 设置为 -Xmx256m - Xss512k -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxMetaspaceSize=100m -XX:ReservedCodeCacheSize=50m
猜你喜欢
  • 1970-01-01
  • 2013-10-01
  • 2014-07-14
  • 2017-04-16
  • 2020-11-23
  • 2023-03-28
  • 2017-11-02
  • 2017-11-29
  • 2012-11-02
相关资源
最近更新 更多