ES 版本 : 6.1.3
JVM配置:
所以,问题:
young区和old区的内存是怎样分配的,可不可以提高young区的内存,使得持续写入的场景下,GC频率降低?
JVM配置:
-Xms31g -Xmx31g
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
查看GC日志如下:[2019-03-20T07:07:02,769][WARN ][elasticsearch[EsNode4][scheduler][T#1]][o.e.m.j.JvmGcMonitorService] [EsNode4@68.29.246.43] [gc][113142] overhead, spent [1.6s] collecting in the last [2.9s]
[2019-03-20T07:09:38,066][WARN ][elasticsearch[EsNode4][scheduler][T#1]][o.e.m.j.JvmGcMonitorService] [EsNode4@68.29.246.43] [gc][young][113296][1480] duration [1.1s], collections [1]/[2.1s], total [1.1s]/[36.4m], memory [16.8gb]->[14.6gb]/[30.6gb], all_pools {[young] [2.4gb]->[19.1mb]/[2.4gb]}{[survivor] [316.1mb]->[261.9mb]/[316.1mb]}{[old] [14.1gb]->[14.3gb]/[27.9gb]}
发现young区的内存分配只有2.4G,而old区内存分配有27.9G。所以,问题:
young区和old区的内存是怎样分配的,可不可以提高young区的内存,使得持续写入的场景下,GC频率降低?
2 个回复
hapjin
赞同来自: wudingmei1024
你可以用 jmap -heap pid 看看JVM堆配置信息,MaxNewSize 估计就只有那么大。–XX:NewRatio 默认是2。具体可参考我的这篇回复
可以调整新生代的内存大小,改JVM配置就好了。
kepmoving - 90后
赞同来自: