Java 应用在 Kubernetes 中的内存配置
在基于物理的服务器(此处主要与容器平台进行区分,故此描述)上运行 Java 应用程序时,我们通常会使用 Java 虚拟机参数 "-Xms、-Xmx" 来指定 Java 堆内存的初始值和最大值。如果要将我们的应用程序移植到容器平台,如何在容器环境中配置 Java 堆内存大小呢?有没有最佳做法?
- MaxRAMPercentage
- InitialRAMPercentage
- MinRAMPercentage
这三个参数是 JDK8U191 为适配 Docker 容器新增的几个参数,类比 Xmx、Xms
注:-XX:InitialRAMFraction、-XX:MaxRAMFraction、-XX:MinRAMFraction 已经被标记为 deprecated。
Docker 容器模式下,我们可以给每个 JVM 实例所属的 POD 分配任意大小的内存上限。比如:给每个账户服务分配 4G,给每个支付服务分配 8G。如此一来,启动脚本就不好写成通用的了,指定 3G 也不是,指定 6G 也不是。但是,有了这三个新增参数,我们就可以在通用的启动脚本中指定 75%(-XX:MaxRAMPercentage=75 -XX:InitialRAMPercentage=75 -XX:MinRAMPercentage=75)
分类:
云原生
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示