首页 > 其他分享 >ElasticSearch的监控与优化

ElasticSearch的监控与优化

时间:2024-03-30 22:29:34浏览次数:13  
标签:-- 写入 默认 ElasticSearch 监控 indices elasticsearch 优化 es

本篇不详写prometheus、grafana的搭建,需要可以翻阅linux监控篇
ElasticSearch入门篇

一、监控

  • docker-compose.yml
elasticsearch_exporter: #监控
image: quay.io/prometheuscommunity/elasticsearch-exporter:v1.3.0
command:
- '--es.uri=http://elasticsearch:9200'
- '--es.all'
- '--es.indices'
- '--es.indices_settings'
- '--es.indices_mappings'
- '--es.shards'
- '--es.snapshots'
- '--es.timeout=30s'
restart: always
ports:
- "9114:9114
参数说明
–es.uri
默认http://localhost:9200,连接到的Elasticsearch节点的地址(主机和端口), 这可以是本地节
点(例如localhost:9200),也可以是远程Elasticsearch服务器的地址
–es.all
默认flase,如果为true,则查询集群中所有节点的统计信息,而不仅仅是查询我们连接到的节点。
–es.cluster_settings
默认flase,如果为true,请在统计信息中查询集群设置
–es.indices
默认flase,如果为true,则查询统计信息以获取集群中的所有索引。
–es.indices_settings
默认flase,如果为true,则查询集群中所有索引的设置统计信息。
–es.shards
默认flase,如果为true,则查询集群中所有索引的统计信息,包括分片级统计信息(意味着es.indices
= true)。
–es.snapshots
默认flase,如果为true,则查询集群快照的统计信息。

docker compose up -d

  • prometheus.yml
 - job_name: 'es-export'
static_configs:
 - targets: ['xxxxxxx:9114']
  • http://ip:9114/metrics
  • grafana :模版id:6483

二、优化

2.1 优化策略

在搜索引擎的业务场景下,用户一般并不需要那么高的写入实时性。比如你在网站发布一条征婚信息,或者二手交易平台发布一个商品信息。其他人并不是马上能搜索到的,这其实也是正常的处理逻辑。这个延时的过程需要处理很多事情,业务层面比如:你的信息需要后台审核。你发布的内容在搜索服务中需要建立索引,而且你的数据可能并不会马上被写入索引,而是等待要写入的数据达到一定数量之后,批量写入。这种操作优点类似于我们快递物流的场景,只有当快递数量达到一定量级的时候,比如能装满整个车的时候,快递车才会发车。因为反正是要跑一趟,装的越多,平均成本越低。这和我们数据写入到磁盘的过程是非常相似的,我们可以把一条文档数据看做是一个快递,而快递车每次发车就是向磁盘写入数据的一个过程。这个过程不宜太多,太多只会降低性能,就是体现在运输成本上面。而对于我们数据写入而言就是体现在我们硬件性能损耗上面。
ES 数据写入具有一定的延时性,这是为了减少频繁的索引文件产生。默认情况下 ES 每秒生成一个segment 文件,当达到一定阈值的时候 会执行merge(合并),merge 过程发生在 JVM中,频繁的生成segment 文件可能会导致频繁的触发 FGC,导致 OOM。为了避免这种情况,通常采取的手段是降低segment 文件的生成频率,手段有两个,一个是 增加时间阈值,另一个是增大 Buffer的空间阈值,因为缓冲区写满也会生成 Segment 文件。

2.2 优化手段

1、增加refresh_interval的参数值

  • 默认情况下,Elasticsearch 每秒定期刷新索引, es支持近实时原因
  • 如果没有搜索流量或搜索流量很少(例如每 5 分钟不到一个搜索请求)并且想要优化索引写入效率,时间建议加大
PUT /{index}/_settings
{
"refresh_interval": "30s"
}

2、增加Buffer大小

  • 本质也是减小refresh的时间间隔,因为导致segment文件创建的原因不仅有时间阈值,还有buffer空间大小,写满了也会创建。
    最小值 48MB< 默认值 JVM 空间的10% < 默认最大无限制
indices.memory.index_buffer_size
  • elasticsearch.ym配置项indices.memory.index_buffer_size是es写入buffer缓存,默认是jvm heap的10%,设置的这个index buffer大小,是所有的shard公用的,也就是shard越多,每个shard分配的memory就会越少,一般建议,但是对于每个shard来说,最多给512mb,因为再大性能就没什么提升了(主要是segment的大小)

3、关闭Disable swapping

https://blog.csdn.net/wang7075202/article/details/111031589

4、内存问题

在 elasticsearch\config 目录下,有三个核心的配置文件:

  • elasticsearch.yml,es相关的配置
  • jvm.options,Java jvm相关参数的配置
    在这里插入图片描述
内存设置

在这里插入图片描述

5、熔断保护机制

elasticsearch.yml

# 避免发生OOM,发生OOM对集群影响很大的
indices.breaker.total.limit: 80%
# 有了这个设置,最久未使用(LRU)的 fielddata 会被回收为新数据腾出空间
indices.fielddata.cache.size: 10%
# fielddata 断路器默认设置堆的 作为 fielddata 大小的上限。
indices.breaker.fielddata.limit: 60%
# request 断路器估算需要完成其他请求部分的结构大小,例如创建一个聚合桶,默认限制是堆内存
indices.breaker.request.limit: 60%

6、重启或者手工清理

POST {idnex}/_cache/clear

7、按照年月日建索引

三、jmeter-ES

Content-Type:application/json

1. 插入数据

在这里插入图片描述

2. 查询数据

在这里插入图片描述

标签:--,写入,默认,ElasticSearch,监控,indices,elasticsearch,优化,es
From: https://blog.csdn.net/su3su3su3/article/details/137123718

相关文章

  • Postgresql同步数据到Elasticsearch
    Postgresql同步数据到es需要借助中间工具连接器,连接器部署主要有两种方式,一种是基于Elastic云托管的连接器(Nativeconnectors),另外一种自己安装管理的连接器(self-managedconnector). 托管方式连接器的使用方法文档:https://www.elastic.co/guide/en/enterprise-search/8.13/......
  • ElasticSearch
    ElasticSearch概述Elasticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,他可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也是用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简......
  • openGauss 数据库指标采集-预测与异常监控
    数据库指标采集、预测与异常监控可获得性本特性自openGauss1.1.0版本开始引入。特性简介本特性是openGauss集成的、可以用于数据库指标采集、预测以及异常监控与诊断的AI工具,是DBMind套间中的一个组件。当前通过兼容Prometheus平台来采集数据库系统的指标,提供Prometheusexpo......
  • openGauss 鲲鹏NUMA架构优化
    鲲鹏NUMA架构优化可获得性本特性自openGauss1.0.0版本开始引入。特性简介鲲鹏NUMA架构优化,主要面向鲲鹏处理器架构特点、ARMv8指令集等,进行相应的系统优化,涉及到操作系统、软件架构、锁并发、日志、原子操作、Cache访问等一系列的多层次优化,从而大幅提升了openGauss数据库在......
  • 直播软件搭建,通过多种方式实现垃圾回收优化
    直播软件搭建,通过多种方式实现垃圾回收优化垃圾回收优化我们还需要根据直播软件搭建的性能需求,调整垃圾回收器的参数,选择合适的垃圾回收策略和算法。在进行接口调优时,垃圾回收优化是内存管理的一个重要方面。合理配置垃圾回收策略以及降低垃圾回收的成本可以有效提高系统的......
  • 直播平台制作,优化内存占用不妨试试轻量级数据架构
    直播平台制作,优化内存占用不妨试试轻量级数据架构使用轻量级数据结构在直播平台制作中选择数据结构时,考虑使用轻量级的数据结构,如ArrayList替代Vector,以及StringBuilder替代String拼接。能够在保证功能的前提下,减小内存占用。以下是一些使用轻量级数据结构的方法:1、使用......
  • 直播软件开发,利用对象池实现内存占用优化
    直播软件开发,利用对象池实现内存占用优化对象池是一种重复使用对象的机制,而不是频繁地创建和销毁对象。通过对象池,可以避免创建大量的临时对象,减小对象数量,从而减少直播软件开发中内存占用和垃圾回收的压力。importjava.util.concurrent.ArrayBlockingQueue;importjava.ut......
  • 硬件算法协同优化-嵌入式深度学习3
    嵌入式深度学习-硬件与算法协同优化本系列博客主要以BertMoons《EmbeddedDeepLearning》翻译而成GoetschalckxK,MoonsB,LauwereinsS,AndraudM,VerhelstM(2018)Optimizedhierarchicalcascadedprocessing.IEEEJEmergingSelTopCircuitsSyst.https://doi.o......
  • 每个程序员都应该了解的内存知识(五): 代码优化
    代码优化多线程优化尽量使用顺序读写因为分支预测的关系,顺序读写通常能够带来更好的性能.共享变量将只读变量和读写变量分离有可能因为缓存行的原因导致读写变量的更新影响到读变量,进而影响了运行速度提升数据的局部性,将一起使用的读写变量分组到一个结构中缓......
  • ai文案软件哪个好用?助你优化内容创作
    在看过那么多“打工人现状”的视频后,大家是不是开始从感同身受变成想摆烂了?这一天天工作量越来越多,哪有人不疯的,硬撑罢了。所以!打工人也该用科技的力量来狠狠地偷懒!上班的时候,就直接把工作内容丢给ai文案自动生成器,让它帮你写,你只需要和同事狠狠地闲聊!现在的ai工具很聪明,它......