梳理下JVM性能分析与调优

首先JVM调优是根据你的服务器以及你代码本身的设计来调整JVM参数来减少FULLGC次数以及内存溢出,堆栈溢出等问题,调优的最大方向是什么?

合理高质量的代码编写

充分利用服务器资源

JVM参数合理

那么为什么要去调优

结合上面所说,调优可以去防止预防出现OOM以及堆栈溢出

减少Full GC出现的频率,因为我们知道Full GC的时间是相比较长的,会跟用户体验上带来不爽

调优实际上也是为了给程序设置较为合理的运行时参数配置,参数如堆内存设置过小,因为运行时产出大量数据,导致年轻代很快爆满,老年代大小又不够,造成FUll GC Yong GC 的频率都很高,而参数设置过大,这是对服务器资源的浪费,而且这些空间并没得到合理利用

监控的依据

我们线上的服务监控异常一般采用这些方法:

1:运行时的log日志打印来了解运行时的一些信息

2:监控分析,自己搭建的日志监控,如果出现异常会通过邮件的形式去通知

3:GC日志 通过JVM参数将运行是出现的OOM等异常信息dump到文件里

4:分析异常的堆栈信息

通过监控发现问题

通过日志或者监控工具发现程序运行中出现的问题,一般会出现这些问题:

GC频繁

cpu load 过高

OOM

内存泄漏

死锁

程序响应时间较长

进行性能分析

通过打印GC日志 通过GCview或者 http://gceasy.io来分析日志信息

灵活运用,命令行工具,jstack、 jmap、 jinfo

dump出堆文件,使用内存分析工具分析文件

使用阿里Arthas, 或 jconsoleJVisualVM来实时查看 JVM 状态

jstack查看堆栈信息

 性能调优

     一种为改善应用响应性或吞吐量而更改参数、源代码、属性配置的活动,性能调优是在性能监控、性能分析之后的活动。

适当增加内存,根据业务背景选择垃圾回收器

优化代码,控制内存使用

增加机器,分散节点压力

合理设置线程池线程数量

使用中间件提高程序效率,比如缓存,消息队列等

....

性能评价/测试指标 

响应时间

平均响应时间关系到客户的体验感,如打开一个网页或者请求一个接口

吞吐量

对单位时间内完成的工作量(请求)的量度

在 GC 中:运行用户代码的时间占总运行时间的比例(总运行时间:程序的运行时间+内存回收的时间)

-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

吞吐量为:1-1/(1+n)

 

并发数

同一时刻,对服务器有实际交互的请求数。1000 个人同时在线,估计并发数在 5%-15%之间,也就是同时并发量:50-150 之间。

内存占用

Java 堆区所占的内存大小。

相互间的关系

以高速公路通行状况为例

  • 吞吐量:每天通过高速公路收费站的车辆的数据
  • 并发数:高速公路上正在行驶的车辆的数
  • 响应时间:车速

随着并发数越来越多,响应时间也就是车速会慢慢降低,吞吐量也可能会反而降低。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值