java kpi_JAVA内存调优的KPI

当我们在进行Java应用程序的内存和垃圾收集调优时,应该根据关键性能指标做出一系列的决定。但有大量的指标; 选择哪一个,抛弃哪一个?本文将解释内存调优正确的KPI。

内存调优的KPI包括: 吞吐量,响应时间和内存空间占用.

A. 吞吐量

吞吐量是指应用程序在给定的时间段内完成的生产性工作数量。这就带来了一个问题什么是生产性工作?非生产性的工作又是什么?

生产性工作: 应用程序在处理客户事务上花费的时间。

非生产性工作: 应用程序在程序本身事务管理工作(主要是垃圾收集)上花费的时间。

假设你的应用程序运行10分钟。在这10分钟里,假设1分钟用于GC活动。

这意味着应用程序在GC活动上花费了10%(即1 / 10 * 100)

这意味着应用程序吞吐量为90%(即100 - 10)。

现在的问题是:你可接受的吞吐量百分比是多少?它取决于应用程序和业务需求。通常,应该将目标设置为95%以上的吞吐量。

B. 响应时间

这是单个垃圾收集事件运行所花费的时间。这个指标应该从三个方面来研究。

平均GC时间:在GC上花费的平均时间是多少?

最大GC时间:在单个GC事件上花费的最大时间是多少?你的应用程序可能是服务级别协议,例如“任何事务都不能超过10秒”。在这种情况下,你的最大GC暂停时间不能运行10秒。因为在GC暂停期间,整个JVM会冻结——不会处理任何客户事务。因此,了解最大GC暂停时间非常重要。

GC时间分布:你还应该了解在什么时间范围内(即在0 - 1秒内完成300个GC事件,在1 - 2秒内完成20个GC事件…)

C. 内存空间占用

内存占用基本上就是CPU消耗的总量。基于你选择的GC算法和内存设置,CPU消耗将会有所不同。一些GC算法将消耗更多的CPU(如Parallel, CMS),而其他一些算法(如Serial)将消耗更少的CPU。

你一次只能选择其中的两个:

如果你想要良好的吞吐量和响应时间,那么内存占用就会变差。

如果你想要良好的吞吐量和占用空间,那么响应时间就会变差。

如果你想要好的响应时间和占用空间,那么吞吐量将会变差。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值