将spring boot应用程序部署到cloud foundry失败,JVM内存问题

将spring boot应用程序部署到cloud foundry失败,JVM内存问题,jvm,heap,cloud-foundry,terracotta,Jvm,Heap,Cloud Foundry,Terracotta,将spring boot应用程序部署到Pivotal Cloud Foundry失败,错误如下。实例的限制设置为2GB,然后设置为4GB。本地应用程序启动正常,堆大小为2GB。 应用程序在初始化缓存管理器期间失败。 知道根本原因是什么吗?不确定陶土在云铸造中扮演什么角色,还有什么需要寻找的 2019-05-07T19:24:53.39+0530 [APP/PROC/WEB/0] OUT at org.springframework.boot.loader.JarLauncher.mai

将spring boot应用程序部署到Pivotal Cloud Foundry失败,错误如下。实例的限制设置为2GB,然后设置为4GB。本地应用程序启动正常,堆大小为2GB。 应用程序在初始化缓存管理器期间失败。 知道根本原因是什么吗?不确定陶土在云铸造中扮演什么角色,还有什么需要寻找的

 2019-05-07T19:24:53.39+0530 [APP/PROC/WEB/0] OUT     at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
   2019-05-07T19:24:53.39+0530 [APP/PROC/WEB/0] OUT Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.cache.CacheManager]: Factory method 'cacheManager' threw exception; nested exception is org.ehcache.StateTransitionException: Cache '<name hidden>' creation in EhcacheManager failed.
....
 Caused by: java.lang.IllegalArgumentException: An attempt was made to allocate more off-heap memory than the JVM can allow. The limit on off-heap memory size is given by the -XX:MaxDirectMemorySize command (or equivalent).
   2019-05-07T19:15:13.15+0530 [APP/PROC/WEB/0] OUT     at org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.bufferAllocation(UpfrontAllocatingPageSource.java:564)
   2019-05-07T19:15:13.15+0530 [APP/PROC/WEB/0] OUT     at org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.lambda$allocateBackingBuffers$1(UpfrontAllocatingPageSource.java:513)
   2019-05-07T19:15:13.15+0530 [APP/PROC/WEB/0] OUT     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   2019-05-07T19:15:13.15+0530 [APP/PROC/WEB/0] OUT     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   2019-05-07T19:15:13.15+0530 [APP/PROC/WEB/0] OUT     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   2019
2019-05-07T19:24:53.39+0530[APP/PROC/WEB/0]在org.springframework.boot.loader.JarLauncher.main上发布(JarLauncher.java:51)
2019-05-07T19:24:53.39+0530[APP/PROC/WEB/0]因以下原因导致的输出:org.springframework.beans.BeanInstantiationException:未能实例化[javax.cache.CacheManager]:工厂方法“CacheManager”引发异常;嵌套异常为org.ehcache.StateTransitionException:在EhcacheManager中创建缓存“”失败。
....
原因:java.lang.IllegalArgumentException:试图分配超出JVM允许的堆外内存。堆外内存大小的限制由-XX:MaxDirectMemorySize命令(或等效命令)给出。
2019-05-07T19:15:13.15+0530[APP/PROC/WEB/0]在org.terracotta.offheapstore.paging.upfrontallocationpagesource.bufferAllocation(upfrontallocationpagesource.java:564)发布
2019-05-07T19:15:13.15+0530[APP/PROC/WEB/0]在org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.lambda$allocatebackbuffers$1(UpfrontAllocatingPageSource.java:513)
2019-05-07T19:15:13.15+0530[APP/PROC/WEB/0]在java.util.concurrent.FutureTask.run(FutureTask.java:266)上输出
2019-05-07T19:15:13.15+0530[APP/PROC/WEB/0]在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2019-05-07T19:15:13.15+0530[APP/PROC/WEB/0]在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2019
编辑:
修复了通过删除堆外ehcache配置:maxBytesLocalOffHeap

默认情况下,Java构建包将约束JVM的各个内存区域。它这样做是为了确保Java应用程序不会超过容器的内存限制,这将是不好的,并会导致应用程序崩溃

您的应用程序正在尝试创建超出Java buildpack设置的限制的直接内存量。在我写这篇文章时,Java构建包正在设置
-XX:MaxDirectMemorySize=10M

要实现这一点,您只需在manifest.yml中或使用
cf set env
设置一个名为
JAVA\u OPTS
的环境变量,内容需要包括
-XX:MaxDirectMemorySize=XXM
,其中
XX
是您想要使用的较大值

当您像这样调整内存设置时,JavaBuildPack将看到,并将减少其他内存区域的大小以进行补偿。如果您试图使用大量的直接内存,这可能会导致您没有足够的内存用于其他区域。如果出现这种情况,则需要增加应用程序的总体内存限制


希望有帮助

默认情况下,Java构建包将约束JVM的各种内存区域。它这样做是为了确保Java应用程序不会超过容器的内存限制,这将是不好的,并会导致应用程序崩溃

您的应用程序正在尝试创建超出Java buildpack设置的限制的直接内存量。在我写这篇文章时,Java构建包正在设置
-XX:MaxDirectMemorySize=10M

要实现这一点,您只需在manifest.yml中或使用
cf set env
设置一个名为
JAVA\u OPTS
的环境变量,内容需要包括
-XX:MaxDirectMemorySize=XXM
,其中
XX
是您想要使用的较大值

当您像这样调整内存设置时,JavaBuildPack将看到,并将减少其他内存区域的大小以进行补偿。如果您试图使用大量的直接内存,这可能会导致您没有足够的内存用于其他区域。如果出现这种情况,则需要增加应用程序的总体内存限制


希望有帮助

感谢您的解释Daniel,我的ehcache堆外内存设置没有必要,所以我删除了它们,问题消失了,但很高兴了解背景感谢Daniel的解释,我的ehcache堆外内存设置没有必要,所以我删除了它们,问题消失了,但很高兴了解背景