高并发场景下JVM调优实践之路
Posted vivo互联网技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高并发场景下JVM调优实践之路相关的知识,希望对你有一定的参考价值。
作者:vivo互联网技术团队 Li Guanyun、 Jessica Chen
一、背景
2021年2月,收到反馈,视频APP某核心接口高峰期响应慢,影响用户体验。
通过监控发现,接口响应慢主要是P99耗时高引起的,怀疑与该服务的GC有关,该服务典型的一个实例GC表现如下图:
可以看出,在观察周期里:
平均每10分钟GC次数66次,峰值为470次;
平均每10分钟Full GC次数0.25次,峰值5次;
可见GC非常频繁,GC在特定的时段也比较频繁,存在较大的优化空间。由于对GC停顿的优化是降低接口的P99时延一个有效的手段,所以决定对该核心服务进行JVM调优。
二、优化目标
接口P99时延降低30%
减少Young GC和Full GC次数、停顿时长、单次停顿时长
由于GC的行为与并发有关,例如当并发比较高时,不管如何调优,Young GC总会很频繁,总会有不该晋升的对象晋升触发Full GC,因此优化的目标根据负载分别制定:
目标1:高负载(单机1000 QPS以上)
Young GC次数减少20%-30% ,Young GC累积耗时不恶化;
Full GC次数减少50%以上,单次、累积Full GC耗时减少50%以上,服务发布不触发Full GC。
目标2:中负载(单机500-600)
Young GC次数减少20%-30% ,Young GC累积耗时减少20%;
Full GC次数不高于4次/天,服务发布不触发Full GC。
目标3:低负载(单机200 QPS以下)
Young GC次数减少20%-30% ,Young GC累积耗时减少20%;
Full GC次数不高于1次/天,服务发布不触发Full GC。
三、当前存在的问题
当前服务的JVM配置参数如下:
31247
灵活运用分布式锁解决数据重复插入问题
深度解析 Lucene 轻量级全文索引实现原理
Kafka万亿级消息实战
服务API版本控制设计与实践
高并发场景下JVM调优实践之路
Percolator模型及其在TiKV中的实现
Android模块化开发实践
以上是关于高并发场景下JVM调优实践之路的主要内容,如果未能解决你的问题,请参考以下文章