知识
工具
数据
经验
案例1
问题:经常有用户反馈长时间出现卡顿的现象
处理思路:
偶发,所以不会是sql问题
监控cpu
监控内存
发现fullGC频繁,每次需要20-30s,停顿时间过长
总结:
大对象过多,jvm内存设置的过大,老年代经常占满触发fullgc,老年代内存过大每次fullgc时间过长
解决:
部署多个web容器,每个web容器的堆内存设置到合理值,不宜过大,减少每次fullgc时间,多个web容器集群提供服务
案例2
问题:不定期内存溢出,把堆内存加大也无济于事。导出堆转储快照信息,没有任何信息。内存监控正常
处理思路:jvm正常,软件没有问题,那就说明服务器有问题。系统中用到了nio直接内存,机器内存过小,直接内存将内存空间占用了,导致堆内存不够用了,触发oom
总结经验:处理问题时不要把直接内存忽略了
案例3
架构:
问题:服务a服务b经常jvm崩溃
寻找原因为:连接请求过多,服务处理不过来,导致jvm崩溃
解决:服务a前增加一个队列(比如mq)