在进行Elasticsearch优化的时候,我们上文《Elasticsearch优化系列(一)使用jdk17》提到过尽量把jdk版本先升到jdk17去。
在完成了jdk17的升级之后,下一步考虑的就是配置ZGC垃圾回收器。
ZGC垃圾回收器是一个并发的、单代的、基于区域的、NUMA 感知的垃圾回收器,Stop-the-world 阶段仅限于根扫描,因此 GC 暂停时间不会随堆或 live set 的变大而增加。而且ZGC垃圾回收期在回收的过程中几乎是全程并发处理,如下图:
所以对于短暂停顿的时间来说非常小,几乎可以忽略不计。下面我们来演示下配置ZGC的垃圾回收器方法。
在elasticsearch的config目录下有一个jvm.options文件
打开后,找到如下部分:
因为我们的jdk版本是jdk17,所以找到14-的地方把这里所有的东西注释掉,然后添加如下的代码:
14-:-XX:+UseZGC 14-:-XX:+UnlockExperimentalVMOptions
最后的样子如下图:
此时我们就配制好了当前的elasticsearch的环境使用ZGC垃圾收集器。
然后我们启动下elasticsearch,启动完成后在日志中查找下ZGC关键词,如下图:
可以看到启动的时候使用的是ZGC垃圾收集器。
以上就是ZGC垃圾收集器的配置全过程。
备注:
1、zgc垃圾收集器从jdk11版本开始支持,所以只要是jdk11及以上的版本都支持zgc垃圾收集器。 2、zgc垃圾收集器的由于是并行进行处理,所以生产环境中ZGC的垃圾收集停顿时间不超过10ms,可以放心大胆的使用起来。 3、使用ZGC是并行的进行垃圾回收,所以有时候会发生查询耗时增加的情况,可以在jvm.options文件中添加如下的参数:-XX:+UseDynamicNumberOfGCThreads 代表动态配置GC线程,降低CPU的使用量,这个事JDK17的新特性,在jdk17以下是没有这个参数的。
具体如下图:
还没有评论,来说两句吧...