0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Elasticsearch写入优化记录,从3000到8000/s

Android编程精选 ? 来源:blog.csdn.net/wmj2004/article/ ? 作者:blog.csdn.net/wmj2004 ? 2022-04-11 10:55 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

背景

  • 基于elasticsearch-5.6.0

  • 机器配置:3个阿里云ecs节点,16G,4核,机械硬盘

优化前,写入速度平均3000条/s,一遇到压测,写入速度骤降,甚至es直接频率gc、oom等;优化后,写入速度平均8000条/s,遇到压测,能在压测结束后30分钟内消化完数据,各项指标回归正常。

生产配置

这里我先把自己优化的结果贴出来,后面有参数的详解:

elasticsearch.yml中增加如下设置

indices.memory.index_buffer_size:20%
indices.memory.min_index_buffer_size:96mb

#Searchpool
thread_pool.search.size:5
thread_pool.search.queue_size:100
#这个参数慎用!强制修改cpu核数,以突破写线程数限制
#processors:16
#Bulkpool
#thread_pool.bulk.size:16
thread_pool.bulk.queue_size:300
#Indexpool
#thread_pool.index.size:16
thread_pool.index.queue_size:300

indices.fielddata.cache.size:40%

discovery.zen.fd.ping_timeout:120s
discovery.zen.fd.ping_retries:6
discovery.zen.fd.ping_interval:30s

索引优化配置:

PUT/_template/elk
{
"order":6,
"template":"logstash-*",#这里配置模板匹配的Index名称
"settings":{
"number_of_replicas":0,#副本数为0,需要查询性能高可以设置为1
"number_of_shards":6,#分片数为6,副本为1时可以设置成5
"refresh_interval":"30s",
"index.translog.durability":"async",
"index.translog.sync_interval":"30s"

}
}

优化参数详解

精细设置全文域: string类型字段默认会分词,不仅会额外占用资源,而且会影响创建索引的速度。所以,把不需要分词的字段设置为not_analyzed

禁用_all字段: 对于日志和apm数据,目前没有场景会使用到

副本数量设置为0: 因为我们目前日志数据和apm数据在es只保留最近7天的量,全量日志保存在hadoop,可以根据需要通过spark读回到es – 况且副本数量是可以随时修改的,区别分片数量

使用es自动生成id: es对于自动生成的id有优化,避免了版本查找。因为其生成的id是唯一的

设置index.refresh_interval: 索引刷新间隔,默认为1s。因为不需要如此高的实时性,我们修改为30s – 扩展学习:刷新索引到底要做什么事情

设置段合并的线程数量:

curl-XPUT'your-es-host:9200/nginx_log-2018-03-20/_settings'-d'{
"index.merge.scheduler.max_thread_count":1
}'

段合并的计算量庞大,而且还要吃掉大量磁盘I/O。合并在后台定期操作,因为他们可能要很长时间才能完成,尤其是比较大的段

机械磁盘在并发I/O支持方面比较差,所以我们需要降低每个索引并发访问磁盘的线程数。这个设置允许max_thread_count + 2个线程同时进行磁盘操作,也就是设置为1允许三个线程

扩展学习:什么是段(segment)?如何合并段?为什么要合并段?(what、how、why)

1.设置异步刷盘事务日志文件:

"index.translog.durability":"async",
"index.translog.sync_interval":"30s"

对于日志场景,能够接受部分数据丢失。同时有全量可靠日志存储在hadoop,丢失了也可以从hadoop恢复回来

2.elasticsearch.yml中增加如下设置:

indices.memory.index_buffer_size:20%
indices.memory.min_index_buffer_size:96mb

已经索引好的文档会先存放在内存缓存中,等待被写到到段(segment)中。缓存满的时候会触发段刷盘(吃i/o和cpu的操作)。默认最小缓存大小为48m,不太够,最大为堆内存的10%。对于大量写入的场景也显得有点小。

扩展学习:数据写入流程是怎么样的(具体到如何构建索引)?

1.设置index、merge、bulk、search的线程数和队列数。例如以下elasticsearch.yml设置:

#Searchpool
thread_pool.search.size:5
thread_pool.search.queue_size:100
#这个参数慎用!强制修改cpu核数,以突破写线程数限制
#processors:16
#Bulkpool
thread_pool.bulk.size:16
thread_pool.bulk.queue_size:300
#Indexpool
thread_pool.index.size:16
thread_pool.index.queue_size:300

2.设置filedata cache大小,例如以下elasticsearch.yml配置:

indices.fielddata.cache.size:15%

filedata cache的使用场景是一些聚合操作(包括排序),构建filedata cache是个相对昂贵的操作。所以尽量能让他保留在内存中

然后日志场景聚合操作比较少,绝大多数也集中在半夜,所以限制了这个值的大小,默认是不受限制的,很可能占用过多的堆内存

扩展学习:什么是filedata?构建流程是怎样的?为什么要用filedata?(what、how、why)

1.设置节点之间的故障检测配置,例如以下elasticsearch.yml配置:

discovery.zen.fd.ping_timeout:120s
discovery.zen.fd.ping_retries:6
discovery.zen.fd.ping_interval:30s

大数量写入的场景,会占用大量的网络带宽,很可能使节点之间的心跳超时。并且默认的心跳间隔也相对过于频繁(1s检测一次)

此项配置将大大缓解节点间的超时问题

后记

这里仅仅是记录对我们实际写入有提升的一些配置项,没有针对个别配置项做深入研究。

扩展学习后续填坑。基本都遵循(what、how、why)原则去学习。

-End-

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7264

    浏览量

    92407
  • Elasticsearch
    +关注

    关注

    0

    文章

    30

    浏览量

    3029

原文标题:Elasticsearch 写入优化记录,从3000到8000/s

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    底层解读labview的TDMS高级异步写入的工作原理

    的数据采集或处理循环,从而显著提高整体应用程序的吞吐量和响应性。 解耦: 将数据生成逻辑(如 DAQ 循环)与数据存储逻辑(磁盘写入)分离,使程序结构更清晰,更易于维护和优化。 关于“同时写入”和线程安全
    发表于 08-14 17:05

    厨房电器EMC整改:测试优化的系统性解决方案

    南柯电子|厨房电器EMC整改:测试优化的系统性解决方案
    的头像 发表于 08-12 11:29 ?78次阅读
    厨房电器EMC整改:<b class='flag-5'>从</b>测试<b class='flag-5'>到</b><b class='flag-5'>优化</b>的系统性解决方案

    是否必须使用LuatIO?Air8000 GPIO配置与设计规范深度解析

    在Air8000的GPIO应用开发中,LuatIO的角色至关重要。本文剖析其必要性,结合设计注意事项,为开发者提供配置优化的全流程指南。 想要4G+GNSS+WiFi+BLE+TT
    的头像 发表于 07-29 13:54 ?129次阅读
    是否必须使用LuatIO?Air<b class='flag-5'>8000</b> GPIO配置与设计规范深度解析

    一:基于Air8000的LuatOS softAP配网功能开发教程

    零构建稳定可靠的网络接入方案。 一、SoftAP 概述 ? 文章开篇先简单介绍下 Air8000 工业引擎的 AP 模式,一般来说,Air8000 工业引擎使用中支持两种无线网络工作模式,分别为
    的头像 发表于 07-21 17:32 ?201次阅读
    <b class='flag-5'>从</b>零<b class='flag-5'>到</b>一:基于Air<b class='flag-5'>8000</b>的LuatOS softAP配网功能开发教程

    通信设备EMC整改:测试优化的系统性解决方案

    深圳南柯电子|通信设备EMC整改:测试优化的系统性解决方案
    的头像 发表于 06-16 11:10 ?317次阅读

    单节点Elasticsearch+Filebeat+Kibana安装指南

    单节点Elasticsearch+Filebeat+Kibana安装指南
    的头像 发表于 05-21 11:06 ?487次阅读
    单节点<b class='flag-5'>Elasticsearch</b>+Filebeat+Kibana安装指南

    直流电机EMC整改:驱动系统整车的协同优化

    深圳南柯电子|直流电机EMC整改:驱动系统整车的协同优化
    的头像 发表于 05-14 11:08 ?549次阅读
    直流电机EMC整改:<b class='flag-5'>从</b>驱动系统<b class='flag-5'>到</b>整车的协同<b class='flag-5'>优化</b>

    汽车电子芯片数量大增: 500 颗 3000 颗,锡膏如何撑起可靠性大旗?

    传统汽车、电动车、智能汽车的芯片用量分别为 500-700 颗、1600 颗、3000 颗以上,芯片类型 MCU、MOSFET 向 AI 芯片、5G 通信芯片进化,推动锡膏技术针对性升级。锡膏选型需深度匹配场景需求,材料配方
    的头像 发表于 04-10 19:08 ?952次阅读
    汽车电子芯片数量大增:<b class='flag-5'>从</b> 500 颗<b class='flag-5'>到</b> <b class='flag-5'>3000</b> 颗,锡膏如何撑起可靠性大旗?

    “事后追溯”“事前预警”:云翎智能巡检记录仪风险管控升级

    云翎智能巡检记录仪通过高精度定位、AI算法与多源数据融合,实现了风险管控“事后追溯”“事前预警”的跨越。其国产化设计确保安全可控,极端环境适配能力强化实战效能,不仅重构了工业巡检的逻辑,更为关键
    的头像 发表于 03-25 14:08 ?464次阅读
    <b class='flag-5'>从</b>“事后追溯”<b class='flag-5'>到</b>“事前预警”:云翎智能巡检<b class='flag-5'>记录</b>仪风险管控升级

    如何在Linux环境下高效安装部署和配置Elasticsearch

    /CentOS-7-x86_64-DVD-2009.iso elasticsearch-7.10.0-linux-x86_64.tar.gz https://www.elastic.co/cn/downloads/past-releases
    的头像 发表于 01-16 11:49 ?1099次阅读

    在华为云上通过 Docker 容器部署 Elasticsearch 并进行性能评测

    ? 2.2 安装 Docker ? 2.3 启动 Docker ? 3. 使用Docker部署Elasticsearch ? 3.1 拉取Elasticsearch镜像 ? 3.2 启动
    的头像 发表于 01-13 13:36 ?584次阅读
    在华为云上通过 Docker 容器部署 <b class='flag-5'>Elasticsearch</b> 并进行性能评测

    Elasticsearch 再次开源

    Elasticsearch 和 Kibana 又可以被称为开源了。很难表达这句话让我有多高兴。我激动得简直要跳起来了。我们 Elastic 的所有人都是如此。开源是我的 DNA。这也是Elastic的DNA。能够再次将 Elasticsearch 称为开源,我感到非常高兴
    的头像 发表于 11-13 12:14 ?505次阅读
    <b class='flag-5'>Elasticsearch</b> 再次开源

    大功率电源EMC测试整改:设计测试的全面优化

    深圳南柯电子|大功率电源EMC测试整改:设计测试的全面优化
    的头像 发表于 10-23 14:19 ?986次阅读
    大功率电源EMC测试整改:<b class='flag-5'>从</b>设计<b class='flag-5'>到</b>测试的全面<b class='flag-5'>优化</b>

    匿名浏览数据安全:代理IP用户心声全记录

    匿名浏览数据安全,代理IP技术在现代网络环境中扮演着重要角色。以下是代理IP用户心声的全记录,涵盖了其应用、优势、挑战及用户心声。
    的头像 发表于 09-30 08:59 ?507次阅读

    记录到管理:单北斗工作记录仪如何优化工作流程

    在这个快节奏的时代,每一分效率的提升都是企业竞争力的关键。繁琐的手工记录到智能化的数据管理,技术的飞跃正悄然改变着我们的工作方式。顶坚单北斗工作记录仪如何成为优化工作流程的得力助手,
    的头像 发表于 08-30 11:09 ?558次阅读
    <b class='flag-5'>从</b><b class='flag-5'>记录</b>到管理:单北斗工作<b class='flag-5'>记录</b>仪如何<b class='flag-5'>优化</b>工作流程