JVM调优指标

一些常见的系统指标

响应时间(RT)
响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。当然,往往也需要对每个或每组功能讨论其平均响应时间和最大响应时间。
  对于单机的没有并发操作的应用系统而言,人们普遍认为响应时间是一个合理且准确的性能指标。需要指出的是,响应时间的绝对值并不能直接反映软件的性能的高低,软件性能的高低实际上取决于用户对该响应时间的接受程度。对于一个游戏软件来说,响应时间小于100毫秒应该是不错的,响应时间在1秒左右可能属于勉强可以接受,如果响应时间达到3秒就完全难以接受了。而对于编译系统来说,完整编译一个较大规模软件的源代码可能需要几十分钟甚至更长时间,但这些响应时间对于用户来说都是可以接受的。
吞吐量(Throughput)
吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。前面已经说过,对于单用户的系统,响应时间(或者系统响应时间和应用延迟时间)可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。
  对于一个多用户的系统,如果只有一个用户使用时系统的平均响应时间是t,当有你n个用户使用时,每个用户看到的响应时间通常并不是n×t,而往往比n×t小很多(当然,在某些特殊情况下也可能比n×t大,甚至大很多)。这是因为处理每个请求需要用到很多资源,由于每个请求的处理过程中有许多不走难以并发执行,这导致在具体的一个时间点,所占资源往往并不多。也就是说在处理单个请求时,在每个时间点都可能有许多资源被闲置,当处理多个请求时,如果资源配置合理,每个用户看到的平均响应时间并不随用户数的增加而线性增加。实际上,不同系统的平均响应时间随用户数增加而增长的速度也不大相同,这也是采用吞吐量来度量并发系统的性能的主要原因。一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。
并发用户数
并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。一网站系统为例,假设用户只有注册后才能使用,但注册用户并不是每时每刻都在使用该网站,因此具体一个时刻只有部分注册用户同时在线,在线用户就在浏览网站时会花很多时间阅读网站上的信息,因而具体一个时刻只有部分在线用户同时向系统发出请求。这样,对于网站系统我们会有三个关于用户数的统计数字:注册用户数、在线用户数和同时发请求用户数。由于注册用户可能长时间不登陆网站,使用注册用户数作为性能指标会造成很大的误差。而在线用户数和同事发请求用户数都可以作为性能指标。相比而言,以在线用户作为性能指标更直观些,而以同时发请求用户数作为性能指标更准确些。
QPS每秒查询率(Query Per Second)
每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。 (看来是类似于TPS,只是应用于特定场景的吞吐量)

不同的垃圾回收器(Garbage Collector, GC)在Java虚拟机(JVM)中扮演着至关重要的角色,它们各自有不同的优化目标和适用场景。以下是对Parallel、CMS(Concurrent Mark Sweep)和G1(Garbage-First)三种垃圾回收器抉择方向的详细解析:

1. Parallel 垃圾回收器(吞吐量优先)

优化目标:Parallel 垃圾回收器以吞吐量为主要优化目标。吞吐量是指程序运行时间占总时间的比例,即用户线程运行时间/(用户线程运行时间+垃圾回收时间)。

特点

  • 多线程并行:Parallel 垃圾回收器利用多线程进行垃圾回收,可以显著提高吞吐量。
  • 自适应调节:能够根据程序需求自动调整内存分配,以达到最优的吞吐量。
  • 适用场景:适合后台计算、批量处理等与用户交互较少的场景,如订单处理、工资支付等。

2. CMS 垃圾回收器(停顿时间优先)

优化目标:CMS 垃圾回收器以尽可能短的停顿时间为优化目标,即减少在垃圾回收过程中用户线程被暂停的时间(Stop The World, STW)。

特点

  • 并发执行:CMS 垃圾回收器与用户线程并发执行,以减少停顿时间。
  • 三色标记算法:采用三色标记算法来标记和清除垃圾对象,以处理并发过程中可能出现的引用关系变化。
  • 缺点:由于并发执行,可能会产生浮动垃圾(即在垃圾回收过程中新产生的垃圾),且基于标记-清除算法,容易产生内存碎片。
  • 适用场景:适合对响应时间要求较高的互联网或B/S系统服务器,如电商网站、在线游戏等。

3. G1 垃圾回收器(折中方案)

优化目标:G1 垃圾回收器旨在在保证用户可接受的停顿时间的前提下,尽可能提高吞吐量。

特点

  • 分区和分代:G1 将堆内存划分为多个大小相同的分区(Region),并同时采用分代思想进行管理。
  • 预测模型:使用预测模型来估算垃圾回收的停顿时间和吞吐量,以做出最优的回收决策。
  • 混合回收:在每次垃圾回收时,G1 不仅会回收年轻代(Eden区和Survivor区),还会根据预测模型选择部分老年代分区进行回收,以减少停顿时间并提高吞吐量。
  • 避免内存碎片:由于每次回收都是针对整个分区进行,因此可以有效避免内存碎片的产生。
  • 适用场景:适合需要大堆内存且对GC延迟有严格要求的应用程序,如大数据处理、云计算平台等。

综上所述,Parallel、CMS 和 G1 三种垃圾回收器在优化目标和适用场景上各有侧重。开发者在选择时应根据应用程序的实际需求进行权衡和选择

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值