Elasticsearch:集群管理的一些建议

 在之前的文章 “Elasticsearch:集群管理” ,我们对集群管理做了一些介绍。在今天的文章中,我们接着来聊一下有关配置的方面的问题。这在很大程度上取决于你的用例,是索引还是搜索繁重。 我们将在这里讨论在集群设置方面我们需要关注的最佳实践是什么。

避免脑裂

在一个由多个 master 符合条件的节点组成的集群中,我们总是担心,如果网络出现分区或不稳定,那么集群会意外地选举出多个 master,这被称为 “脑裂” 场景。 因此,为了避免这种情况,我们至少需要最少的主节点投票才能赢得主节点选举。 创建 3 个专用主节点

Elasticsearch 要求半数 +1 的符合主节点资格的节点必须投票选举新的主节点,从而避免了这种情况。 因此,强烈建议使用 3 个节点来提供能够失去 1 个主节点并保持稳定的结构。

注意:集群在负载过重时会变得不稳定。
如果主节点除了其常规任务之外还必须执行索引和搜索操作,它可能最终没有足够的资源来执行和监视对集群稳定性至关重要的其他操作,例如创建或删除索引,决定哪些分片应该 分配到哪些节点上,并在每个节点上维护集群状态。

主节点通常比数据节点需要更少的资源。 在其余节点上将 node master 设置为 false。

node.master: false

更多阅读,请参考文章 “Elasticsearch:理解 Master,Elections,Quorum 及 脑裂”。

JVM heap 大小设置

Elasticsearch 和 Lucene 是用 Java 编写的,我们需要调整最大堆空间和 JVM 统计信息。 需要注意的是,Elasticsearch 可用的堆越多,它可以用于过滤、缓存和其他进程以提高查询性能的内存就越多。 此外,过多的堆空间会导致大量垃圾回收。

将 Xms 和 Xmx 设置为不超过总内存的 50%。 Elasticsearch 需要内存用于 JVM 堆以外的用途。 例如,Elasticsearch 使用堆外缓冲区来实现高效的网络通信,并依赖于操作系统的文件系统缓存来实现对文件的高效访问。

禁用交换

操作系统尝试将尽可能多的内存用于文件系统缓存,并急切地换出未使用的应用程序内存。 当操作系统决定这样做时,Elasticsearch 性能可能会受到严重影响,因为它甚至可以将 Elasticsearch 可执行页面换出磁盘。 禁用操作系统级交换并启用内存锁可以帮助我们避免这种情况。

Just add the below in your elasticsearch.yml file.
Set bootstrap.memory_lock: true

虚拟内存调整

Elasticsearch 默认使用 mmaps 目录来存储其索引。 默认操作系统限制 mmap 计数并且可能太低,这可能导致内存不足异常。 因此,为避免虚拟内存耗尽,请增加对 mmap 计数的限制。

/etc/sysctl.conf file
Set vm.max_map_count=262144

注意:通常情况下,deb 及 rpm 安装包可以帮我们自动配置这些。我们不需要手动来配置,但是当我们使用解压缩包的情况下来进行安装,那么我们需要进行手动配置。详细情况,请参考文章链接 “如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch”。

打开文件描述符限制

确保将运行 Elasticsearch 的用户的打开文件描述符数量限制增加到 65,536 或更高。

You can get from: 
http://IP:PORT/_nodes/stats/process?filter_path=**.max_file_descriptors
GET _nodes/stats/process?filter_path=**.max_file_descriptors

 我们可以在如下的文件中进行设置:

set nofile to 65535 in /etc/security/limits.conf

禁用通配符

由于无法检索从 Elasticsearch 集群中删除的数据,因此要确保有人不会对所有索引(* 或 _all)发出 DELETE 操作,请禁用通过通配符查询删除所有索引。

Set action.destructive_requires_name to true

我们可以通过如下的命令来进行设置:

PUT /_cluster/settings
{
  "transient": {
	"action.destructive_requires_name":true
  }
}

如果你想设置为允许,你可以通过如下的命令来进行设置:

PUT /_cluster/settings
{
  "transient": {
	"action.destructive_requires_name":false
  }
}

Elasticearch 分片大小

分片大小没有硬性限制,但经验表明,10GB 到 50GB 之间的分片通常适用于日志和时间序列数据。 它的大小太大会在节点发生故障时花费太多时间来恢复,Elasticsearch 会在数据层的剩余节点之间重新平衡节点的分片,并且也需要时间来运行,但这并不意味着较小的分片在所有情况下都表现良好。

更多信息,请详细阅读 “Elasticsearch:我的 Elasticsearch 集群中应该有多少个分片?”。

垃圾收集器

Old generation 收集暂停发生在重负载下,此时所有去往该节点上分片的请求都被冻结,直到垃圾收集完成。 在繁重的索引负载下,这些集合可能需要几秒钟或更长时间。

Elasticsearch 中的默认垃圾收集器是 Concurrent Mark and Sweep (CMS)。 直到 old generation 的收集器占用率达到 CMSInitiatingOccupancyFraction 中设置的值,CMS才会启动。 当此值过高时会出现问题,从而导致 GC 延迟。 将会有很多长寿命对象,这意味着 CMS 将需要更多时间来清除 old generation。 较新版本的 Java 中最近的 GC 选项是 Garbage First Garbage Collector (G1GC),它旨在最大限度地减少垃圾收集器必须停止所有应用程序线程的时间。 G1GC 将堆分成更小的区域,每个区域可以是年轻代或老年代。 GC 可以决定分析有更多垃圾的区域,通过避免一次收集整个老年代来减少 GC 暂停时间。 查看分片的当前大小

查看分片的当前大小:

http://IP:PORT/_cat/shards?v=true&h=index,prirep,shard,store&s=prirep,store

查看每个节点的分片数: 

http://IP:PORT/_cat/shards?v=true

获取集群设置:

http://IP:PORT/_cluster/settings?pretty&include_defaults

检查节点统计信息:

http://IP:PORT/_nodes/stats?metric=adaptive_selection,breaker,discovery,fs,http,indices,jvm,os,process,thread_pool,transport

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/10425.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode.130 被围绕的区域

题目链接 Leetcode.130 被围绕的区域 mid 题目描述 给你一个 m x n的矩阵 board,由若干字符 X和 O,找到所有被 X围绕的区域,并将这些区域里所有的 O用 X填充。 示例 1: 输入:board [[“X”,“X”,“X”,“X”],[“X…

「Cpolar」使用Typecho搭建个人博客网站【内网穿透实现公网访问】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言A…

在 Python 中计算两个数字之间的百分比

要计算两个数字之间的百分比,请将一个数字除以另一个数字,然后将结果乘以 100,例如 (30 / 75) * 100。这显示第一个数字占第二个数字的百分比。 在示例中,30 是 75 的 40%。 def is_what_percent_of(num_a, num_b):return (num_a…

基于SVG的HMI组件

人机界面是自动化领域不可或缺重要组成部分。人机界面系统的设计看上去并没有太大的技术门槛,但是设计一个HMI系统的工作量是巨大的,如果你没有足够的耐心和精力是难以完成一个通用HMI系统的。构建UI控件库就是一个似乎永远完不成的事情,用户…

Halo博客建站实战以及问题汇总

目录 简介 特性 快速开始 安装步骤 环境准备 Docker-compose方式部署 问题汇总 mac端无法访问页面 页面登录提示账号密码错误 重装注意点 资料 官方文档 简介 Halo 强大易用的开源建站工具 特性 代码开源 我们的所有代码开源在 GitHub 上且处于积极维护状态&…

《分解因数》:质因数分解

目录 一、题目&#xff1a; 二、思路&#xff1a; 三、代码&#xff1a; 一、题目&#xff1a; 分解因数 《分解因数》题目链接 所谓因子分解&#xff0c;就是把给定的正整数a&#xff0c;分解成若干个素数的乘积&#xff0c;即 a a1 a2 a3 ... an,并且 1 < a1…

HCIA第二次笔记

目录 OSI/RM七层参考模型——开放式的系统互联参考模型 核心——分层 TCP/IP模型——TCP/IP协议簇 应用层 应用层协议 封装与解封装 传输层 TCP协议和UDP协议的区别 TCP的报文 TCP的三次握手 TCP的四次挥手 TCP的四种可靠传输机制 OSI/RM七层参考模型——开放式的系…

[目标识别-论文笔记]Object Detection in Videos by Short and Long Range Object Linking

文章标题&#xff1a;2018_Cite13_Tang——Object Detection in Videos by Short and Long Range Object Linking 这篇论文也被叫做“2019_Cite91_TPAMI_Tang——Object Detection in Videos by High Quality Object Linking” 如果这篇博客对你有帮助&#xff0c;希望你 点赞…

学生信息管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87673902 更多系统资源库…

【设计模式】如何在业务开发中使用适配器模式?

文章目录前言适配器模式定义通用代码实现适用场景案例场景分析一坨坨代码实现适配器模式重构总结前言 适配器模式&#xff08;Adapter Pattern&#xff09;&#xff1a;将一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个…

高速Serdes技术(FPGA领域应用)

目录引入一、Serdes&#xff08;概念-历程&#xff09;1、概念2、技术现状3、发展历程二、Serdes结构三、在FPGA领域中的运用四、Serdes跟Lvds的关系五、Xilinx 有关 serdes的文档六、参考文献引入 回顾接口技术发展历史&#xff0c;其实数据的传输最开始是低速的串行接口&…

OSI七层网络模型与TCP/IP四层模型

一、OSI七层网络模型 OSI 七层模型 是国际标准化组织提出一个网络分层模型&#xff0c;其大体结构以及每一层提供的功能如下图所示&#xff1a; 但由于各方面原因&#xff0c;OSI 七层模型并没有被广泛应用&#xff0c;更多的是作为网络分层的一种基础理论模型。 二、TCP/IP…

NumPy 基础知识 :1~5

原文&#xff1a;Numpy Essentials 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 一、NumPy 简介 “我宁愿使用通用语言进行数学运算&#xff0c;也不愿尝试使用数学语言进行通用编程。” – John D Cook 在过去的十年中&#xff0c;Python 已成为科学计算中最受欢迎…

MVCC

MVCC基本概念 当前读 当前读 : 读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁. 对于我们日常的操作. 如 : select....lock in share mode(共享锁) , select * for update , update ,insert,delete(排他锁) 都是一种当前读. 快…

Java对象模型

介绍 Java是一种面向对象的语言&#xff0c;而Java对象在JVM中存储是由一定结构的。而这个 Java对象自身的存储模型称之为Java对象模型HotSpot虚拟机中&#xff0c;设计了一个OOP-Klass Model.OOP指的是普通对象指针&#xff0c;而Klass用来描述对象的具体类型。如下图所示是一…

文章生成器写出来的原创文章

文章生成机器人 文章生成机器人是一种基于人工智能技术和自然语言处理算法的程序&#xff0c;可以自动地生成高质量、原创的文章。 文章生成机器人的优点如下&#xff1a; 提高工作效率&#xff1a;文章生成机器人能够在较短的时间内自动帮助用户生成大量的文章&#xff0c;提…

Python 小型项目大全 21~25

二十一、DNA 可视化 原文&#xff1a;http://inventwithpython.com/bigbookpython/project21.html 脱氧核糖核酸是一种微小的分子&#xff0c;存在于我们身体的每个细胞中&#xff0c;包含着我们身体如何生长的蓝图。它看起来像一对核苷酸分子的双螺旋结构&#xff1a;鸟嘌呤、…

计算机网络微课堂1-3节

目录 1. TCP/TP协议​编辑 2. 3.调制解调器 4.因特网的组成 5.电路交换 6.分组交换 重要常用 7.报文交换 8.总结电路交换 报文交换和分组交换 9. 1. TCP/TP协议 2. ISP 网络提供商 ISP的三层 国际 国家 和本地 3.调制解调器 什么是调制解调器&#xff0c;它存在的…

Python 小型项目大全 11~15

十一、标题党生成器 原文&#xff1a;http://inventwithpython.com/bigbookpython/project11.html 我们的网站需要欺骗人们去看广告&#xff01;但是想出有创意的原创内容太难了。幸运的是&#xff0c;有了标题党生成器&#xff0c;我们可以让一台计算机产生数百万个令人发指的…

【Linux】浅析Input子系统

文章目录1. 框架1.1 数据结构1.2 evdev_handler1.3 evdev_init1.4 input_register_handler2. 应用如何打开节点并读取到事件数据2.1 evdev_fops2.2 evdev_open2.3 evdev_release2.4 evdev_read2.5 evdev_write2.6 evdev_poll2.7 evdev_fasync2.8 evdev_ioctl2.9 evdev_ioctl_co…