searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

JVM调优-使用Jvisualvm辅助的JVM调优案例

2023-10-07 08:41:58
2
0

背景及问题现象

程序背景:该程序为基于HTTP协议开发,实现了数据订阅接收的功能

问题现象:大量的数据接收,出现了数据堆积的问题

问题排查过程

现场环境JVM配置参数如下图:

JVM参数分析

JVM中新生代和堆内存的大小配置不合理,新生代只有256M会频繁导致YGC,堆内存的设置初始值512M,最大值2048M,会导致处理速度波动。

FGC在以3秒左右的周期出发,导致大量时间停顿,发现FGC的次数在4天内达到了124398次,STW的时间达到了159037.355秒,高达44个小时

JVM参数对程序效率影响的验证

简单进行JVM参数调整

将新生代调整为1024M,堆大小调整为10240M

修改后的JVM,YGC的频率为3秒,FGC频率明显下降,测试中只出现了13次 ,说明JVM参数对程序性能有较大影响

JVM进一步调优

第一次调优

继续修改参数,将新生代10240M,堆大小设置为30720M

修改后的JVM,YGC的频率为40秒,FGC在测试中没有出现,但是老年代中对象大小随着YGC不断变大,监控如下

第二次调优

再次调节JVM的垃圾回收策略为G1GC

修改后的JVM,YGC的频率为70秒,FGC在测试中没有出现,老年代中对象增长速率明显下降,内存空间由G1自动调节,避免内存浪费,监控如下

最终结论

如上图对JVM的监控,经过对JVM的优化,现场环境稳定,性能可以承受现场发送的数据量,不再产生数据堆积。

0条评论
0 / 1000
Mr. 油
89文章数
0粉丝数
Mr. 油
89 文章 | 0 粉丝
原创

JVM调优-使用Jvisualvm辅助的JVM调优案例

2023-10-07 08:41:58
2
0

背景及问题现象

程序背景:该程序为基于HTTP协议开发,实现了数据订阅接收的功能

问题现象:大量的数据接收,出现了数据堆积的问题

问题排查过程

现场环境JVM配置参数如下图:

JVM参数分析

JVM中新生代和堆内存的大小配置不合理,新生代只有256M会频繁导致YGC,堆内存的设置初始值512M,最大值2048M,会导致处理速度波动。

FGC在以3秒左右的周期出发,导致大量时间停顿,发现FGC的次数在4天内达到了124398次,STW的时间达到了159037.355秒,高达44个小时

JVM参数对程序效率影响的验证

简单进行JVM参数调整

将新生代调整为1024M,堆大小调整为10240M

修改后的JVM,YGC的频率为3秒,FGC频率明显下降,测试中只出现了13次 ,说明JVM参数对程序性能有较大影响

JVM进一步调优

第一次调优

继续修改参数,将新生代10240M,堆大小设置为30720M

修改后的JVM,YGC的频率为40秒,FGC在测试中没有出现,但是老年代中对象大小随着YGC不断变大,监控如下

第二次调优

再次调节JVM的垃圾回收策略为G1GC

修改后的JVM,YGC的频率为70秒,FGC在测试中没有出现,老年代中对象增长速率明显下降,内存空间由G1自动调节,避免内存浪费,监控如下

最终结论

如上图对JVM的监控,经过对JVM的优化,现场环境稳定,性能可以承受现场发送的数据量,不再产生数据堆积。

文章来自个人专栏
存储专栏
89 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0