jvm优化案例2--并发高时请求规律性超时

现象

线上公开课系统,由于疫情原因,访问暴增。系统优化以后,读请求,单机请求qps=1500左右。但是在线上业务繁忙时间段,请求会有规律的2-3分钟就会出现一批请求超时。压测中,如果请求保持一段时间,也是可以重现这个现象的。

分析工具

arthas,MAT

使用arthas的jvm命令,可以看到2-3分钟就会有出现full Gc的情况,然后结合MAT的内存分析工具,可以看到大量的对象,集中在一个读请求的对象。访问最多的接口的返回值对象。

判断

请求过多导致jvm 垃圾回收 full gc,从而引起jvm暂停,请求积压,从而超时

解决方法

1.调整jvm的内存的配比,从原来的默认年轻代 比 老年代的 1:2,调整为2:1,提升年轻代的空间;G1垃圾回收器,控制垃圾回收的时间。
2.调整接口返回值对象的大小,尽量返回code码,避免文字过大的内容,前端来处理映射。
对前3页课程信息内容的简介等描述信息,作为本地缓存,不产生多余重复性的大字段。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Catalog 1 怎么解决OOM?/ 怎么排查OOM?/ JVM调优1.1 JDK自带工具1.2 阿里开源JVM...
    allen锅阅读 2,934评论 0 1
  • 1、从编码到执行 解释执行和编译执行是可以混合的,执行次数多的代码,会进行 JIT 的编译,交由操作系统直接执行。...
    ArthurHC阅读 2,750评论 0 2
  • Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频...
    Rick617阅读 12,086评论 1 9
  • 常见面试题:1)内存泄漏与内存溢出的区别(2)young gc会有stw吗?(3)major gc和full gc...
    WEIJAVA阅读 5,188评论 0 8
  • 引言 1.什么是JVM? JVM——Java虚拟机,它是Java实现平台无关性的基石。 Java程序运行的时候,编...
    JAVA这件小事阅读 3,349评论 0 0