我有大约8个API的JAR和4个来自spring cloud(Zuul,Hystrix,Config-Server,Eureka)。我现在正在一台服务器上运行所有的罐子,虽然我们将在以后进行生产时扩大规模。
AWS Linux服务器具有16GB内存。我遇到的问题是由于某种原因服务器不断耗尽内存,当我尝试执行Jar时,我得到以下错误。
free -m
total used free shared buff/cache available
Mem: 15630 13684 1835 17 110 1781
错误并非特定于特定jar,它是随机的。
来自服务器的内存(目前我已经部署了9个jars): -
.csproj
有没有人遇到过类似的问题。如果需要任何其他信息,可以提供更多信息。
任何帮助将不胜感激。
答案 0 :(得分:2)
这通常发生在JVM尝试使用更多内存且可用且操作系统在程序启动后拒绝时。我会尝试减少堆大小,以给系统更多的空闲内存。
你几乎没有使用过任何缓冲区/缓存,这些信息告诉我你的可用内存有时会小于这个大小。 (只是当你拿这个样本时)
这台机器有多少可用的交换空间?
答案 1 :(得分:1)
我将java参数添加到执行作业中,似乎解决了这个问题。
java -Xmx64m -Xss256k -jar abc.jar
在此之后,即使我在同一台服务器上部署了13个jars,我还剩下10GB的内存,在添加参数之前是1.7GB。
内存在JAVA参数之前:
free -m
total used free shared buff/cache available
Mem: 15630 13684 1835 17 110 1781
Java争论之后的内存:
free -m
total used free shared buff/cache available
Mem: 15630 4927 8769 25 1932 10373