当前位置: 首页 > news >正文

记录一次es的性能调优

文章目录

  • es性能调优
  • 启用g1垃圾回收器

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 安装目录及其子目录的读写权限。

http://www.lryc.cn/news/31551.html

相关文章:

  • 内核性能评估测试及具体修改操作步骤记录
  • S7-200smart远程无线模拟量信号采集案例
  • Blender Python材质处理入门
  • ChatGPT后劲很大,问题也是
  • 世界那么大,你哪都别去了,来我带你了解CSS3 (二)
  • 2023年再不会Redis,就要被淘汰了
  • Java SPI机制了解与应用
  • vue实现输入框中输完后光标自动跳到下一个输入框中
  • 如何构建 C 语言编译环境?
  • 电子台账:模板制作之一——列过滤(水平过滤)
  • 【java】Java连接mysql数据库及mysql驱动jar包下载和使用
  • Mysql八股文
  • 解析Android ANR问题
  • ESP32设备驱动-MicroSD Card驱动
  • XC7K160T-1FBG484I、XC7A100T-2CSG324I FPGA可编程门阵列 PDF规格书
  • 基于HD-RK3568-IO评估板的读写速度测试报告
  • jconsole远程linux下的tomcat
  • Redis和MySQL如何保持数据一致性?
  • 频谱分析仪的工作原理
  • docker项目自动化部署脚本(认真排版、工作积累)
  • 【经验分享】使用了6年的实时操作系统,是时候梳理一下它的知识点了 | 文末赠书4本
  • 蓝桥杯C/C++程序设计 往届真题汇总(进阶篇)
  • yocto 将kernel添加到rootfs
  • 高通 Android10/12 4 6dof Camera+2RGBCamera异常处理经验总结
  • 项目实战典型案例17——环境混用来带的影响
  • Linux【进程理解】
  • 【华为OD机试2023】数组的中心位置 C++ Java Python
  • “大数据时代下的地理信息可视化:ECharts地图和数据面板实践“
  • MySQL数据库基础
  • 近自由电子近似