提问人:skycaptain 提问时间:11/13/2023 更新时间:11/13/2023 访问量:54
如何控制JVM堆使用率,尽可能保持在80%以下?
how to control jvm heap usage rate to stay below 80% as much as possible?
问:
我们的springboot应用程序用于获取大数据并对其进行压缩。所以它总是需要大内存。但客户的 Prometheus 始终监控它并向我们发送警报堆内存使用率超过 80%。虽然我们知道它不会哎呀并重新启动......但是我们解释起来很无聊,所以我们尽量让GC提前发生,避免阈值80%。当然,尽可能多地,但不是绝对的。
附言: JDK1.8 -XX:+UseG1GC -XX:MaxRAMPercentage=75
答:
0赞
aled
11/13/2023
#1
如果确保应用程序不在堆中创建对象,则堆内存的使用量不应增加。这通常是不切实际的,在现实生活中也不可行。
您可以分析并尝试最小化内存的使用及其在内存中保留的时间。但是,不能保证您会取得多大的成功。
话虽如此,这是由于用户对 JVM 内存的工作方式以及如何监控它的错误期望而导致的常见情况。教育您的客户可能很有用。
另一种选择是在现实生活中监控应用程序的内存模式,并根据这些条件调整监控警报。
评论
0赞
skycaptain
11/13/2023
用户会向我们的应用程序发送许多请求,然后应用程序将持续从数据库中提取数据。因此,它会经常在堆中创建对象。我们知道超过 80% 是很常见的,但向那些对 java 一无所知的人解释它很无聊,所以我们试图减少警报数量,例如 .通过在达到 75% 时强制 GC .
0赞
aled
11/13/2023
解释某事很无聊,这不是一个好的技术原因。强制将 GC 强制设置为堆的固定百分比可能会影响性能。您是否使用不同的配置执行了基准测试,以了解更改的影响?
评论