1.了解ES集群拓扑结构

当我们启动Elasticsearch的实例,就会启动至少一个节点。相同集群名的多个节点的连接组成一个集群,

在默认情况下,集群中的每个节点都可以处理Http请求和集群节点的数据传输。

集群中的所有的节点都知道集群中其他所有的节点,可以将客户端请求转发到适当的节点。

默认情况下,节点同时是主节点和数据节点,这适合小集群(3个节点);大于3个节点后,分离主节点和数据节点变得非常重要。

  1. 配置线程池

尽量不要动线程池这个配置,如果要动,建议改为: int(( 核心数 3 )/ 2 )+ 1 。

同时满足:不允许bulk和’indexing’线程池的大小大于CPU内核数。

举例:24核处理器,检索服务器是24核,所以:线程池的大小 =(24*3)/2+1=37,

同时要满足cpu核数为24。37和24取最小值,应该选择24。

默认的队列大小是1000,

现在的问题是:并发请求数据超过了队列最大的大小,导致出错。

可能的解决方案:

1)、增加队列大小;(太大了,可能会导致内存溢出)

2)、增加节点数和副本数。

队列大小:

在elasticsearch.yml中新增如下配置:

    ## Threadpool Settings
### Search pool
thread_pool.search.size: 24
thread_pool.search.queue_size: 2000 #Bulk pool
thread_pool.bulk.size: 24
thread_pool.bulk.queue_size: 1000
# Index pool thread_pool.index.size: 24
thread_pool.index.queue_size: 1000

如果你的批量请求数目高于队列大小,将会出现RemoteTransportException异常。

  1. 配置堆内存

    Elasticsearch 默认安装后设置的堆内存是 1 GB。

    修改 jvm.options配置文件。
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms4g
-Xmx4g

确保堆内存最小值( Xms )与最大值( Xmx )的大小是相同的,防止程序在运行时改变堆内存大小, 这是一个很耗系统资源的过程。

注意:

最大可分配堆内存大小为: 32GB与当前ES宿主机内存二者的最小值。

举例1):ES宿主机内存:128GB,可供分配的堆内存:32GB。(建议31GB)

举例2):ES宿主机内存:32GB,可供分配的堆内存:16GB。

  1. 禁止swapping操作

    elasticsearch.yml 文件中的Memory部分,修改设置如下:
bootstrap.memory_lock : true

核心原因:内存交换 到磁盘对服务器性能来说是 致命 的。

  1. 配置文件描述符数目

    步骤1)设置环境变量。
vim /etc/profile

增加

ulimit -n 65535

用以设定同一时间打开的文件数的最大值为65535。

source /etc/profile 使得命令生效。

步骤2)修改limits.conf配置文件。

/etc/security/limits.conf

增加

* soft nofile 65536
* hard nofile 65536

用来限制打开文件数65535

步骤3)切换到Elasticsearch用户,使用ulimit -a 查看是否修改成功。

# ulimit -a

核心原因: Elasticsearch 在节点和 HTTP 客户端之间进行通信也使用了大量的套接字(注:sockets)。 所有这一切都需要足够的文件描述符。

而: 许多现代的 Linux 发行版本,每个进程默认允许一个微不足道的 1024 文件描述符。这对一个小的 Elasticsearch 节点来说实在是太 低 了,更不用说一个处理数以百计索引的节点。

  1. 修改最大映射数量MMP

    Elasticsearch 对各种文件混合使用了 NioFs( 非阻塞文件系统)和 MMapFs ( 内存映射文件系统)。

请确保你配置的最大映射数量,以便有足够的虚拟内存可用于 mmapped 文件。这可以暂时设置:

sysctl -w vm.max_map_count=262144

或者你可以在 /etc/sysctl.conf 通过修改 vm.max_map_count 永久设置它。

# tail -f /etc/sysctl.conf
vm.max_map_count=262144

Elasticsearch部署清单---前期准备工作的更多相关文章

  1. RMAN 前期准备工作和实例

    理解恢复目录,RMAN可以在没有恢复目录(NOCATALOG)下运行,这个时候备份信息保存在控制文件.保存在控制文件的备份信息是很危险的,如果控制文件的破坏将导致备份信息的丢失与恢复的失败,而且,没有 ...

  2. 使用JDBC对数据库进行查询的前期准备工作,以及简单的JDBC访问MySQL数据库(Mac)

    首先JDBC的前期数据库数据准备: 1,打开链接好MySQL的Workbench软件,新建一个数据库: 2.然后打开数据库对应的代码编辑窗口,建立表和插入数据记录: 3.然后是打开关于javaWeb编 ...

  3. openstack 前期准备工作

    OS 是 centos6.5_X86_64 一.vmware 虚拟机 准备两台机虚拟机即可 二.导入第三方安装源 [root@openstack ~]# rpm -Uvh http://dl.fedo ...

  4. Ubuntu离线安装VSCode(附带前期准备工作)

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 在说正式步骤前先把准备工作做到位: 1.IP设置,这个因为是GUI的,手动设置 ...

  5. ZedBoard前期准备工作

    1. 资源下载 内核:https://github.com/Xilinx/linux-xlnx/releases uboot:https://github.com/Xilinx/u-boot-xlnx ...

  6. vue组件库(一):前期准备工作

    前言 将近期项目内自行开发一个vue组件,做个总结,记录下自己的思维过程~~~ 正文 接到这个任务后,还是要做些准备工作的. 主要内容如下: 1.优化下所在团队前端开发流程 服务器搭建gitlab,采 ...

  7. 鸿蒙的fetch请求加载聚合数据的前期准备工作-手动配置网络权限

    目录: 1.双击打开"config.json"文件 2.找到配置网络访问权限位置1 3.配置内容1 4.默认访问内容是空的 5.添加配置内容2 6.复制需要配置的网络二级URL 7 ...

  8. Android studio中使用asmack的jar包的前期准备工作

    1.下载相应的jar包,官网:http://asmack.freakempire.de/SNAPSHOTS/ 将下载好的jar包拷贝到工程文件的libs文件夹下 2.右击app,然后依次操作 然后点击 ...

  9. linux 编程技术No.1前期准备工作

    原创博文,转载请注明出处. GCC的编译过程分为预处理.生成汇编代码.生成目标代码和链接成可执行文件等4个步骤. 使用vim编写C 文件 : [lining@localhost program]$ v ...

随机推荐

  1. HMS Core安全检测服务如何帮助大学新生防范电信诈骗?

    一年一度的高考结束了,很多学生即将离开父母,一个人踏入大学生活,但由于人生阅历较少,容易被不法分子盯上. 每年开学季也是大一新生遭受诈骗的高峰期,以下是一些常见的案例.有的骗子会让新生下载注册一些恶意 ...

  2. Java开发学习(十四)----Spring整合Mybatis及Junit

    一.Spring整合Mybatis思路分析 1.1 环境准备 步骤1:准备数据库表 Mybatis是来操作数据库表,所以先创建一个数据库及表 create database spring_db cha ...

  3. Trie树模板2

    Trie数模板2 problem 这道题然后我们求最大异或对,我们很容易想出来 \(O(n^2)\) 的做法,两层循环遍历搞定 然后我们知道这样是肯定是肯定过不了的,我们考虑用字典树解决,然后我们来看 ...

  4. 基于Caffe ResNet-50网络实现图片分类(仅推理)的实验复现

    摘要:本实验主要是以基于Caffe ResNet-50网络实现图片分类(仅推理)为例,学习如何在已经具备预训练模型的情况下,将该模型部署到昇腾AI处理器上进行推理. 本文分享自华为云社区<[CA ...

  5. 网易云UI模仿-->侧边栏

    侧边栏 效果图 界面分解 可以看到从上到下的流式布局.需要一个Column来容纳,并且在往上滑动的过程中顶部的个人信息是不会动的.所以接下来需要将剩余部分占满使用Flexibel组件. 实现 个人信息 ...

  6. 基于.NetCore开发博客项目 StarBlog - (16) 一些新功能 (监控/统计/配置/初始化)

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  7. input 输入框背景色设置为透明

  8. Vue 路由的简单使用(命名路由、query路由传参、params路由传参)

    1 # Vue 路由 2 # 1.理解:一个路由(toute)就是一组映射关系(key-value),多个路由需要路由器(router)进行管理 3 # 2.前端路由:key是路径,value是组件 ...

  9. 如何在本地配置lemonlime和使用lemonlime测试交互题

    如何在本地配置\(lemonlime\)和使用\(lemonlime\)测试交互题 \(lemonlime\)下载地址链接,提取码ae3z 点开\(lemonlime.exe\)然后编译器选择\(gc ...

  10. 故障案例 | 慢SQL引发MySQL高可用切换排查全过程

    作者:梁行 万里数据库DBA,擅长数据库性能问题诊断.事务与锁问题的分析等,负责处理客户MySQL日常运维中的问题,对开源数据库相关技术非常感兴趣. GreatSQL社区原创内容未经授权不得随意使用, ...