记录一次es的性能调优

Posted shuaibo.wang|王帅博

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一次es的性能调优相关的知识,希望对你有一定的参考价值。

文章目录

es性能调优

成都的es集群经常出现告警,查看日志发现

[gc][11534155] overhead, spent [38.3s] collecting in the last [38.6s]

这是 JVM 垃圾回收过程中的一条日志,表示在最近 38.6 秒内,JVM 进行了一次 GC (Garbage Collection) 的操作,回收垃圾所占用的内存。这条日志的含义是,在这次 GC 中,有很大一部分时间(38.3 秒)是用于处理 GC 相关的开销(例如标记垃圾、整理内存等),而不是实际回收垃圾。

这可能是因为堆内存中的对象数量太多,导致 GC 操作变得缓慢。可以尝试通过调整 JVM 的垃圾回收策略、调整堆内存大小等方式来优化性能。

这里谈谈jvm的垃圾回收策略

  • -XX:+UseSerialGC:使用串行垃圾回收器;
  • -XX:+UseParallelGC:使用并行垃圾回收器;
  • -XX:+UseParallelOldGC:使用并行老年代垃圾回收器;
  • -XX:+UseConcMarkSweepGC:使用CMS垃圾回收器;
  • -XX:+UseG1GC:使用G1垃圾回收器;
  • -XX:NewRatio:新生代和老年代的比例;
  • -XX:SurvivorRatio:Eden区域和Survivor区域的比例;
  • -XX:MaxHeapSize:JVM最大堆内存大小。

一般来说,使用 G1 垃圾收集器可能比较适合 Elasticsearch。G1 是一种面向服务端应用的低延迟、高吞吐量垃圾回收器,可以根据内存使用情况动态地调整堆内存的分配比例,并且不会出现长时间的停顿。

下面是g1垃圾回收器的常用参数

  • -XX:+UseG1GC:启用G1垃圾回收器。
  • -XX:G1HeapRegionSize=n:指定每个Heap区域的大小,可以控制最小的内存分配单元。
  • -XX:MaxGCPauseMillis=n:指定期望的最大GC停顿时间(毫秒)。
  • -XX:G1NewSizePercent=n:指定新生代大小相对于堆大小的百分比。
  • -XX:G1MaxNewSizePercent=n:指定新生代最大大小相对于堆大小的百分比。
  • -XX:G1ReservePercent=n:指定保留的空间百分比,以便在需要时可以快速分配内存。
  • -XX:InitiatingHeapOccupancyPercent=n:指定当堆被占用的比例达到指定阈值时,启动并发标记周期。-
  • -XX:G1HeapWastePercent=n:指定堆中允许浪费的最大空间百分比。

除了垃圾回收器的选择之外,还可以调整 Elasticsearch 的垃圾回收策略参数。例如,可以调整堆内存的大小、垃圾回收的线程数、垃圾回收的阈值等参数,以达到更好的垃圾回收效果。具体的调整方法可以参考 Elasticsearch 的官方文档,以及相关的调优指南。

启用g1垃圾回收器

要在 Elasticsearch 6.3.2 中启用 G1 垃圾回收器,需要进行以下步骤(将其他垃圾回收器关掉):

编辑 Elasticsearch 的 JVM 配置文件 config/jvm.options,加入以下参数:

-XX:+UseG1GC
-XX:G1ReservePercent=25
-XX:InitiatingHeapOccupancyPercent=30
-XX:MaxGCPauseMillis=200
-XX:+ParallelRefProcEnabled
-XX:-OmitStackTraceInFastThrow

其中,-XX:+UseG1GC 启用 G1 垃圾回收器,其余参数用于优化 G1 的性能和行为。

确认 Elasticsearch 进程的运行用户并给予该用户对 Elasticsearch 安装目录及其子目录的读写权限。

以上是关于记录一次es的性能调优的主要内容,如果未能解决你的问题,请参考以下文章

[数据库]漫谈ElasticSearch关于ES性能调优几件必须知道的事(转)

漫谈ElasticSearch关于ES性能调优几件必须知道的事(转)

ElasticSearch中的JVM性能调优

陈曦:性能与稳定并存 Elasticsearch调优实践

elasticsearch性能调优

ES集群性能调优链接汇总