自己工作那么久很少接触到内存调整方面的问题,很巧的是最近两个系统频繁出现了GC回收始终高于75%同时长久不触发OC的回收。自己看到这些很是开心啊,终于有了机会来体验面试中常问的是否有过内存调优方面的经验,哈哈,我再也不空白了。。。。。。。
1、WebLogic中间件频繁告警GC回收率高于75%。自己首先打出hrof的heapdump然后通过mat工具查看内存使用情况。
从mat中可以看到内存有620M都被MemorySessionContext占用,当时按网上说的点击Detail查看后发现有个char[]很大,不是太清楚Shallow Heap的意思,就直接和开发确认看是哪个地方用了这个char,是否存了较大的数据。开发确认没有大的数据存到session中。
能够肯定的是session这块肯定有问题,自己又继续研究mat分析日志的方式,通过Dominator Tree处看这里看的很清楚MemorySessionContext占用内存86.98%,点开session类可以看到有27000多个hashtable对象。然后再点开看到ROOT是organization对象,通过与开发确认每个用户都会将自己的组织机构存到session中。与开发确认session失效的时间时发现,用户的session失效配置成了1

本文分享了在运维中遇到的两个关于GC频繁告警的问题及其解决过程。首先,针对WebLogic中间件的告警,通过MAT工具分析发现MemorySessionContext占用大量内存,经确认是session中存储了过多的组织机构信息,调整session失效时间后告警消除。其次,对于tomcat的GC问题,通过jstat监控发现新生代和老生代比例配置不当,调整新生代大小后告警消失,表明内存配置优化有效。

1086

被折叠的 条评论
为什么被折叠?



