加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

如何合理的规划JVM性能调优

发布时间:2019-02-21 01:26:35 所属栏目:站长百科 来源:阿里云云栖社区
导读:JVM机能调优涉及到方方面面的弃取,每每是牵一发而动满身,必要通盘思量各方面的影响。但也有一些基本的理论和原则,领略这些理论并遵循这些原则会让你的机能调优使命将会越发轻松。为了更好的领略本篇所先容的内容。你必要已经相识和遵循以下内容: 1、已

必然得必要发生足够的压力,找到应用措施和出产情形岑岭切合状态相同的负荷,在此之后到达峰值之后,保持一个不变的状态,,才算是一个不变阶段。以是要到达不变阶段,压力测试是必不行少的,详细怎样怎样对应用压力测试,本篇不外多声名,后期会有专门先容的篇幅。

在确定了应用出于不变阶段的时辰,要留意调查应用的GC日记,出格是Full GC 日记。

GC日记指令: -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:

GC日记是网络调优所需信息的最好途径,即即是在出产情形,也可以开启GC日记来定位题目,开启GC日记对机能的影响极小,却可以提供富厚数据。

必需得有FullGC 日记,假如没有的话,可以回收监控器材逼迫挪用一次,可能回收以下呼吁,亦可以触发

  1. jmap -histo:live pid 

在不变阶段触发了FullGC我们一样平常会拿到如下信息:

从以上gc日记中,我们或容许以说明到,在产生fullGC之时,整个应用的堆占用以及GC时刻,虽然了,为了越发准确,应该多网络屡次,获取一个均匀值。可能是回收耗时最长的一次FullGC来举办估算。

在上图中,fullGC之后,晚年月空间占用在93168kb(约93MB),我们以此定为晚年月空间的活泼数据。

其他堆空间的分派,基于以下法则来举办。

基于以上法则和上图中的FullGC信息,我们此刻可以筹划的该应用堆空间为:

java 堆空间: 373Mb (=晚年月空间93168kb*4)

新生代空间:140Mb(=晚年月空间93168kb*1.5)

永世代空间:5Mb(=永世代空间3135kb*1.5)

晚年月空间: 233Mb=堆空间-新生代看空间=373Mb-140Mb

对应的应用启动参数应该为:

java -Xms373m -Xmx373m -Xmn140m -XX:PermSize=5m -XX:MaxPermSize=5m

四、耽误调优

在确定了应用措施的活泼数据巨细之后,我们必要再举办耽误性调优,由于对付此时堆内存巨细,耽误性需求无法到达应用的必要,必要基于应用的环境来举办调试。

在这一步举办时代,我们也许会再次优化堆巨细的设置,评估GC的一连时刻和频率、以及是否必要切换到差异的垃圾网络器上。

1、体系耽误需求

在调优之前,我们必要知道体系的耽误需求是那些,以及对应的耽误可调优指标是那些。

应用措施可接管的均匀停滞时刻: 此时刻与丈量的Minor GC一连时刻举办较量。

可接管的Minor GC频率:Minor GC的频率与可容忍的值举办较量。

可接管的最大停即刻间: 最大停即刻间与最差环境下FullGC的一连时刻举办较量。

可接管的最大搁浅产生的频率:根基就是FullGC的频率。

以上中,均匀停滞时刻和最大停即刻间,对用户体验最为重要,可以多存眷。

基于以上的要求,我们必要统计以下数据:

MinorGC的一连时刻;

统计MinorGC的次数;

FullGC的最差一连时刻;

最差环境下,FullGC的频率;

2、优化新生代的巨细

好比如上的gc日记中,我们可以看到Minor GC的均匀一连时刻=0.069秒,MinorGC 的频率为0.389秒一次。

假如,我们体系的配置的均匀停滞时刻为50ms,当前的69ms明明是太长了,就必要调解。

我们知道新生代空间越大,Minor GC的GC时刻越长,频率越低。

假如想镌汰其一连时长,就必要镌汰其空间巨细。

假如想减小其频率,就必要加大其空间巨细。

为了低落改变新生代的巨细对其他地区的最小影响。在改变新生代空间巨细的时辰,只管保持晚年月空间的巨细。

好比此次镌汰了新生代空间10%的巨细,应该保持晚年月和持代的巨细稳固革,第一法式优后的参数如下变革:

java -Xms359m -Xmx359m -Xmn126m -XX:PermSize=5m -XX:MaxPermSize=5m新生代的巨细有140m变为126,堆巨细适应变革,此时晚年月是没有变革的。

3、优化晚年月的巨细

同上一步一样,在优化之前,也必要收罗gc日记的数据。此次我们存眷的是FullGC的一连时刻和频率。

上图中,我们可以看到

FullGC 均匀频率 =5.8sFullGC 均匀一连时刻=0.14s(以上为了测试,真实项目标fullGC 没有这么快)

假如没有FullGC的日记,有步伐可以评估么?

我们可以通过工具晋升率举办计较。

工具晋升率

好比上述中启动参数中,我们的晚年月巨细=233Mb。

那么必要多久才气填满晚年月中这233Mb的空闲空间取决于新生代到晚年月的晋升率。

每次晋升晚年月占用量=每次MinorGC 之后 java堆占用环境 减去 MinorGC后新生代的空间占用

工具晋升率=均匀值(每次晋升晚年月占用量) 除以 晚年月空间

有了工具晋升率,我们就可以算出填布满晚年月空间必要几多次minorGC,或许一次fullGC的时刻就可以计较出来了。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读