gpt4 book ai didi

java - spring boot微服务在docker-swarm中消耗大量内存

转载 作者:行者123 更新时间:2023-11-30 07:44:11 25 4
gpt4 key购买 nike

我在 Azure 上的 Ubuntu 16.04.4 LTS 实例上运行了一些 docker swarm 容器。这些容器正在运行 Java Spring Boot 和 Netflix OSS 应用程序,如 Eureka、Ribbon、Gateway 等应用程序。我观察到我的容器占用了大量内存,尽管服务只是 REST 端点。

我试图通过如下所示传递 Java VM args 来限制内存消耗,但这并没有帮助甚至在之后大小也没有改变。

请注意下面我在这里使用的配置,

Java 版本:Java 8 Alpine

内核版本:4.15.0-1023-azure

操作系统:Ubuntu 16.04.4 LTS

操作系统类型:linux

架构:x86_64

CPU:32

总内存:125.9GiB

docker stats 之后的内存占用量

docker stats

Java 虚拟机参数,

docker service create --name xxxxxx-service --replicas 1 --network overnet 127.0.0.1:5000/xxxxxx-service --env JAVA_OPTS="-Xms16m -Xmx32m -XX:MaxMetaspaceSize=48m -XX:CompressedClassSpaceSize=8m -Xss256k -Xmn8m -XX:InitialCodeCacheSize=4m -XX:ReservedCodeCacheSize=8m -XX:MaxDirectMemorySize=16m -XX:+UseCGroupMemoryLimitForHeap -XX:-ShrinkHeapInSteps -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=70"

我也尝试查看每个容器中的应用程序日志文件,但找不到任何与内存相关的错误。我也试图限制容器资源。但这对我也不起作用。

Limit a container's resources

有什么线索可以解决这个沉重的内存问题吗?

最佳答案

您可以使用 visualvm 或 jprofiler 等分析器解决此问题,它们会向您显示内存的分配位置(哪些类型的对象等)。

不过,如果可能的话,您不应该在生产系统上使用它,因为分析可能会占用大量 CPU。

关于java - spring boot微服务在docker-swarm中消耗大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52754251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com