IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ElasticSearch优化 -> 正文阅读

[大数据]ElasticSearch优化

ElasticSearch优化

硬件选择

  • 使用ssd
  • 使用RAID0
  • 使用多个硬盘,并允许ES通过多个path.data目录配置把数据条带化分配到他们上面
    不要使用远程挂载的存储,比如NFS或者SMB/CIFS。这个引入的延迟对性能来说是背道而驰

分片策略

合理设置分片数

  1. 控制每个分片占用的硬盘容量不超过ES的最大JVM的堆空间(一般设置不超过32G),因此,如果索引的总量在500G左右,那分片大小在16个左右即可,最好同时考虑原则2
  2. 考虑一下node数量,一般一个节点有时候就是一台物理机,如果分片数量过多,大大超过了节点数,很可能会导致一个节点上存在多个分片,一旦该节点故障,即使保持了一个以上的副本,同样有可能会导致数据丢失,集群无法恢复。所以, 一般都设置分片数不超过节点数的3倍
  3. 主分片,副本和节点最大数之间数量,分配参考关系
    节点数 <= 主分片数 * (副本数+1)

推迟分片分配

写入速度优化

  1. 加大TranslogFlush,目的是降低Iops,Writeblock.
  2. 增加Index Refresh间隔,目的是减少segment Merge的次数
  3. 调整Bulk线程池和队列
  4. 优化节点间的任务分布
  5. 优化Lucene层的索引建立,目的是降低cpu及io

批量数据提交

  1. ES提供了BulkAPI支持批量操作,当我们有大量的写任务时,可以使用Bulk来进行批量写入
    通用的策略:如果Bulk默认设置批量提交的数据量不能超过100M.数据条数一般时
    根据文档的大小和服务器性能而定的,但是单词批处理的数据大小应从5MB~15MB
    逐渐增加,当性能没有提升时,把这个数据量作为最大值

减少Refresh的次数

  1. Lucene在新增数据时,采用了延迟写入的策略,默认情况下索引的refresh_interval为1秒
    Lucene将待写入的数据优先写到内存中,超过1秒(默认)时就会触发一次Refresh,然后Refresh
    会把内存中的数据刷新到操作系统的文件缓存系统中,如果我们对搜索的时效性要求不高,可以将Refresh周期延长,例如30秒

加大Flush设置

  1. Flush的主要目的是把文件缓存系统中的段持久化到硬盘,当Translog的数据量达到512MB
    或者30分钟时,会触发一次Flush
  2. index.translog.flush_threshold_size参数的默认值为512MB,我们进行修改。
    增加参数值以为值文件缓存系统中可能需要 存储更多的数据,所以我们需要为操作系统的文件
    缓存系统留下足够的空间

减少副本的数量

  • S为了保证集群的可用性,提供了Replicas(副本)支持,然后每个副本也会执行分析、索引及可能的
    合并过程,索引Replicas的数量会严重有影响索引的效率

内存设置

  • ES堆内存的分配原则:
  1. 不要超过物理内存的50% Lucene的设计母的是把底层os里的数据缓存到内存中
    Lucene的段是分别存储到单个文件中的,这些文件都是不会变化的,所以很利于缓存,同时操作系统也会把这些文件缓存起来,以便更快的的访问
    如果我们设置的堆内存过大,Lucene可用的内存将会减少,就会严重影响降低Lucene的全文本查询性能
  2. 堆内存的大小最好不要超过32GB 在java中,所有对象都分配在堆上,然后有一个Klass Pointer指针指向它的类元数据。
    这个指针在64位的操作系统上为64位,64位的操作系统可以使用更多的内存2的64次方。在32位的系统上位32位,
    32位的操作系统的最大寻址空间位4GB 2的32次方
    但是64位的指针意味着更大的浪费,以为你的指针本身大了,浪费内存不算,更糟糕的是,更大的指针在主内存和缓存器(例如LLC,L1等)
    之间移动数据的时候,会占用更多的带宽。
    最终采用31G -Xms31g -Xmx31g

重要参数设置

在这里插入图片描述

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:49:30  更:2022-04-18 17:52:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:25:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码