异常垃圾回收(GC)行为致Tomcat服务器性能下降排查咨询
应用背景
我们基于Tomcat服务器部署多用户Java Web应用,已为30+客户搭建并运行服务器。
问题现象
某特定客户服务器出现异常内存使用现象:系统运行数小时或数天后,因CPU负载过高导致性能下降,推测与内存占用及*GC(垃圾回收)*相关。
观察结果
- 截图显示服务器可用内存约14GB,应用预留堆内存约5GB且已完全占用;堆空间与已用堆渐近趋近,GC持续加剧,服务器性能不断下降。
- 已在三个时间点抓取堆转储:
- 客户报修时
- 半数用户登出后
- 所有用户登出后
- 附正常状态截图(同服务器登出后未重启状态)作对比。
已尝试操作
已分析JFR文件、堆转储,但未定位到具体方向;问题并非对象分配异常,而是GC不断加剧且应用未扩容堆内存。
环境信息
- VM版本:
openjdk version "15.0.2" - VM参数:
-Djava.awt.headless=true -Xmx15000M -XX:+UseParallelGC -XX:MaxGCPauseMillis=1000 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2 -XX:InitiatingHeapOccupancyPercent=70 -XX:+UseStringDeduplication -XX:StartFlightRecording=maxsize=250m,settings=default
疑问
- 为何GC持续频繁回收却不扩容堆内存?
- 如何进一步调试?恳请方向指引。
内容的提问来源于stack exchange,提问作者berni
相关产品推荐
相关产品推荐

