前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高并发服务优化篇:JVM--工程师进阶的必经之路

高并发服务优化篇:JVM--工程师进阶的必经之路

作者头像
Coder的技术之路
发布2022-09-19 11:44:48
3430
发布2022-09-19 11:44:48
举报
文章被收录于专栏:Coder的技术之路

这篇是最近重发的JVM调优相关的文章汇总,考虑到应该隶属于高并发的服务端优化系列,现在系列文章涉及到了这一块,为了完整性就汇总在一起来填补这块的内容。看过的可以忽略,建议收藏,万一后面有遇到可以做个参考。

前言

JVM调优,是一个JAVA工程师在进阶道路上的必经之路。每一次真实的生产环境下的调优经历和总结,都对整个JVM体系知识的融会贯通有很大的作用。

Java为了实现跨平台、高度抽象等特性,增加了JVM来实现Java代码到机器码的转换。这给运行速度增加了不少损耗,但是好处也很多,诸如内存管理、垃圾回收等容器级通用功能,让研发人员可以更加聚焦业务。

其中,GC技术用来进行内存自动管理,避免手动管理带来的指针悬挂问题,让开发人员可以不再过多的关注内存,很大程度上提升了开发效率。

然而,有利也有弊,这种类黑盒的管理功能,让我们开发同学对内存的把控程度有所下降。发生问题时的排查成本也随之增加。

《JVM问题排查基础:看懂GC日志》

GC日志是很多jvm问题排查和定位的第一道工具。比如

  • 如果我们发现old区上升较快,s区却没有变化,是不是可以猜测是s区大小设置的和当前系统的对象大小不合适,导致没有进过s区的年代晋升直接到了老年代;
  • 又或者我们发现频繁fgc, gc日志中fgc之后 堆大小变化不大,是不是可以从内存泄露这个方向去分析dump文件。
  • 又或者我们在进行了一系列业务逻辑优化后,系统的响应任然不尽人意,碰巧公司暂时还没有成熟的监控平台,那从GC日志的耗时分析出发,就成了分析问题的必然之路了。

《生产环境GC日志相关参数的设置》

生产环境GC日志要遵循够用就好的原则,因为GC日志的打印时间也会被算在STW中。那么,需要打印哪些,怎么设置对应的参数,就有一些讲究了。

主要列举了基础的必备参数以及一些比较关键的,或者说比较容易忽略,但是有可能引起GC异常的信息监控:如GC日志文件滚动、禁写Statistics数据、安全点相关参数等。

《Young GC 问题排查经验汇总》

Young GC的问题其实是比较难排查的,这里汇总了一些可行的排查思路和方向,绝大部分应该都逃不出这个范围。

  • 等待线程到达安全点导致young gc时间增加。比如,大循环、线程间竞争等等。从GC日志中安全点中,和等待的线程数可以看出端倪。
  • 存活对象扫描和标记导致时间异常。本地缓存过多、 system class loader 加载对象过多、JNI & Monitor & finalizable等都可能是罪魁祸首。
  • 其他的还有eden区大小设置不当导致的对象copy增多,以及GC日志打印,都是排查young gc耗时异常时需要重点关注的地方。

JVM调优大图一览

方法总比困难多,通过一次次的采坑,总结出了一些规范和行之有效的应对方向。希望对大家日常开发和问题排查有所帮助。

对于文章,或者对于JVM调优有什么问题,欢迎大家留言或者加好友探讨交流~

推荐阅读:

3. 高并发架构优化:从BAT实际案例看消息中间件的妙用

4. 高并发存储优化:细说数据库索引原理及其优化策略

5. 高并发存储优化:许是史上最详尽分库分表文章之一

6. 高并发存储优化:数据库索引优化Explain实战

7. 高并发存储番外:阿里数据中间件源码不完全解析

8. 高并发存储优化:诸多策略,缓存为王

9. 高并发存储番外:redis套路,一网打尽

10. 高并发服务优化:浅谈数据库连接池

11. 高并发服务优化:详解RPC的一次调用过程

12. 高并发服务优化:详解一次由读写锁引起的内存泄漏

任何问题和意见、建议,欢迎菜单栏添加好友,交流学习~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coder的技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档