【发布时间】:2016-07-20 07:20:03
【问题描述】:
我有大约 8 个 API 的 JAR 和 4 个来自 spring cloud(Zuul、Hystrix、Config-Server、Eureka)。我现在在一台服务器上运行所有的 jar,不过我们稍后会在生产时扩大规模。
AWS Linux 服务器有 16GB 内存。我遇到的问题是服务器由于某种原因不断耗尽内存,当我尝试执行 Jar 时出现以下错误。
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x000000078fb80000, 293601280, 0) failed; error='Cannot allocate memory' (errno=12)
错误不是特定于特定 jar 的,它是随机的。
来自服务器的内存(目前我部署了 9 个 jars):-
free -m
total used free shared buff/cache available
Mem: 15630 13684 1835 17 110 1781
有没有人遇到过类似的问题。如果需要任何其他信息,可以提供更多信息。
我们将不胜感激。
【问题讨论】:
-
您可以尝试进行飞行记录,java -XX:StartFlightRecording=settings=profile,filename=recording.jfr,dumponexit=true
(JDK8u40) 并在 Java Mission Control 中打开. JFR 在 OOM 上可能会遇到问题,但很多时候它会成功。查看 Object Statistics 以了解填充堆的对象类型,或者 Allocation Statistics(如果有非常大的对象)或有关本机内存、垃圾收集等的信息可能会提供线索,
标签: java spring-boot out-of-memory spring-cloud jvm-hotspot